Ich arbeite mit einer Seite, die den Preis eines Produkts anzeigt. Normalerweise sieht es wie folgt aus:jQuery Selektor für verschiedene HTML-Struktur
<span id="priceText">
$26.94
</span>
Wenn der Artikel zum Verkauf, es sieht dies wie:
<span id="priceText">
<strike>$26.94</strike>
<span class="salePrice">$25.00</span>
</span>
ich eine generische Funktion haben, die den Preis von jeder Seite extrahiert etwa so:
var getPrice = function(price_id) {
return jQuery(price_id).text();
};
Dabei ist price_id
die ID des Elements, das den Preis enthält.
Wie klar ersichtlich ist, wird dies nicht mit der obigen Struktur arbeiten, da die „Verkauf“ -Version beide kehren $ 26,94 und 25,00 $, wenn ich price_id zu priceText
gesetzt
Ich habe keine Kontrolle über den HTML-Code auf dem Produkt Seite, also kann ich die Struktur nicht ändern. Ich muss die getPrice
Funktion auf anderen Seiten verwenden, die diese HTML-Struktur nicht haben, also will ich auch vermeiden, es zu ändern.
Was ich suche ist eine Art von jQuery Selektor, die $ 25,00 zurückgibt, wenn der Artikel im Verkauf ist, oder $ 26,94, wenn es nicht ist. So etwas wie „Rückkehr der gesamten Textes innerhalb von priceText
NICHT in einem Streik-Tag“
ich zur Zeit einen eigenen Schnipsel habe, die machen folgend:
jQuery('#priceText .salePrice').length ? jQuery('#priceText .salePrice').text() : jQuery('#priceText strike').text()
Allerdings mag ich benutzerdefinierte Code-Zeilen wie diese vermeiden. Ich denke, das ist vielleicht nicht möglich mit nur jQuery Selektoren, aber ich hoffe, jemand beweist mich falsch!
oh, das ist eine Sache der Schönheit! lass es mich versuchen, aber ich denke, das ist genau das, was ich gesucht habe – Pabs123
Gute Lösung! Plunker https://plnkr.co/edit/2wNRMNAnywtPcEOuU4ri?p=preview –
das funktionierte großartig, ich hatte nicht gedacht, mehrere Selektoren zu verwenden UND: keine Selektoren zur gleichen Zeit. das macht sehr viel Sinn. Danke! – Pabs123