Jeśli mam:
<div class="apple-monkey"></div>
<div class="apple-horse"></div>
<div class="cow-apple-brick"></div>
Mogę użyć następującego selektora, aby znaleźć pierwsze dwa DIV:
$("div[class^='apple-']")
Jeśli jednak mam to:
<div class="some-other-class apple-monkey"></div>
<div class="apple-horse"></div>
<div class="cow-apple-brick"></div>
Znajdzie tylko drugą DIV, ponieważ klasa pierwszego div jest zwracana jako ciąg (tak mi się wydaje) i tak naprawdę nie zaczyna się od „apple-”, ale raczej „some-”
Jednym ze sposobów jest nieużywanie zaczyna się od, ale zamiast tego zawiera:
$("div[class*='apple-']")
Problem w tym, że w moim przykładzie wybierze również 3 DIV.
Pytanie: Jaki jest właściwy sposób używania selektorów predykatów w nazwach poszczególnych klas, a nie całego atrybutu klasy jako łańcucha, za pośrednictwem jQuery? Czy to tylko kwestia przechwycenia CLASS, a następnie podzielenia jej na tablicę, a następnie zapętlenia każdej z nich za pomocą wyrażenia regularnego? A może istnieje bardziej eleganckie / mniej rozwlekłe rozwiązanie?
var divs = $("div[class^='apple-']"); if(divs.length == 0) divs = $("div[class*=' apple-']");
Poleciłbym uczynić „jabłko” własną klasą. Jeśli możesz, powinieneś unikać rozpoczynania od / kończy się na, ponieważ możliwość wyboru za pomocą
div.apple
byłaby znacznie szybsza. To bardziej eleganckie rozwiązanie. Nie bój się dzielić rzeczy na osobne klasy, jeśli sprawia to, że zadanie jest prostsze / szybsze.źródło
to jest dla przedrostka z
$("div[class^='apple-']")
to jest na początek, więc nie musisz mieć tam znaku '-'
$("div[class|='apple']")
możesz znaleźć kilka innych fajnych odmian selektora jQuery tutaj https://api.jquery.com/category/selectors/
źródło
Chociaż najważniejszą odpowiedzią tutaj jest obejście konkretnego przypadku osoby pytającej, jeśli szukasz rozwiązania faktycznego używania słowa „zaczyna się od” w nazwach poszczególnych klas:
Możesz użyć tego niestandardowego selektora jQuery, który nazywam
:acp()
„prefiksem klasy A”. Kod znajduje się na dole tego posta.Spowoduje to wybranie wszystkich
<div>
elementów, które mają co najmniej jedną nazwę klasy zaczynającą się od podanego ciągu (w tym przykładzie „tekst_początkowy”), niezależnie od tego, czy ta klasa znajduje się na początku, czy w innym miejscu w ciągach atrybutów klasy.To zwróci elementy 1, 2 i 3, ale nie 4 lub 5.
Oto deklaracja
:acp
selektora niestandardowego, którą możesz umieścić w dowolnym miejscu:Zrobiłem to, ponieważ robię wiele hakowania GreaseMonkey na stronach internetowych, na których nie mam kontroli wewnętrznej, więc często muszę znaleźć elementy z nazwami klas, które mają dynamiczne sufiksy. To było bardzo przydatne.
źródło
Spróbuj tego:
źródło
w tym przypadku jako pytanie Josh Stodola odpowiedź jest poprawna Klasy zaczynające się od „jabłko-” plus klasy zawierające „jabłko-”
ale jeśli element ma wiele takich klas
wtedy rozwiązanie Josha Stodoli nie zadziała,
ponieważ trzeba zrobić coś takiego
może to pomaga komuś innemu dzięki
źródło
Jeśli element ma klasy wielokrotności "[class ^ = 'apple-']" nie działa, np
źródło