enthält Ich habe eine Reihe von Listenelementen mit einem Attribut. Ich möchte nur zwei oder drei davon gleichzeitig auswählen. Derzeit bin ich split
eine durch Kommata getrennte Liste von Ids ing dann einen Array von Selektoren zu schaffen für jQuery zurückzukehren:jQuery-Attributselektor, wobei Wert im Array
var ids = $(this).text().split(','); //e.g. text = 1,13,27
var selectors = [];
for (var index in ids)
{
selectors.push('.container ul.class li[data-id="'+ids[index]+'"]');
}
$(selectors.join(',')).addClass('active');
Diese recht teuer Ansatz für Firefox zu sein scheint. Gibt es eine Möglichkeit, dies zu optimieren, so dass ich eine li mit dem Daten-ID-Attribut auswählen kann, das eine der IDs enthält?
Etwas ähnlich wie unten, aber die Auswahl eines der Werte?
var ids = $(this).text().split(','); //e.g. text = 1,13,27
$('.container ul.class li[data-id~="' + ids + '"]').addClass('active');
[Bearbeiten]
Dank @Alnitak ‚s Kommentar Ich habe meine Schleifen geändert:
var ids= $(this).text().split(',');
var length = ids.length;
for (var i=0; i<length;i++)
{
selectors.push('.container ul.class li[data-id="'+ids[i]+'"]');
}
dies eine große Verbesserung geliefert hat, aber gibt es nicht mehr was ich tun kann?
nicht 'für ... in' auf Arrays verwenden Sie - es ist für _object keys_ aufzählt, nicht _array indices_. – Alnitak
Danke. Ich habe das 'for ... in' für' for (var i = 0; i