Suchen Sie in jquery alle Elemente mit einem bestimmten Attributwert


88

Ich muss alle Elemente finden, die einen speziellen Attributwert haben.

Hier ist die Div, die ich finden muss (ich habe viele von ihnen ..)

<div imageId='imageN'>...

Ich muss einfach die Divs durchlaufen, die haben imageId='imageN'


6
Ich würde empfehlen, class="imageN"für gültiges HTML zu verwenden. Entweder das oder data-imageId="imageN"für gültiges HTML5. Mit dem ersteren können Sie die Klassenauswahl verwenden.
Andy E

Andy, der Grund dafür ist, dass diese Divs dynamisch von Code-Behind hinzugefügt werden und unterschiedliche ImageIds haben, aber dieselbe Klasse.
Pabuc

3
Sie können mehrere Klassen haben, class="image imageN"wenn das hilft.
Val

Warum wählen Sie dann nicht den Klassennamen aus, wenn sie bereits dieselbe Klasse haben?
Praxis Ashelin

Antworten:


140
$('div[imageId="imageN"]').each(function() {
    // `this` is the div
});

Um zu überprüfen, ob das Attribut allein vorhanden ist, können Sie stattdessen den Selektor verwenden: $('div[imageId]')


4
@ThiefMaster - Wenn der Attributwert nicht konstant ist (dh variiert), wie kann er dann gefunden werden?
Entwickler

ein paar Fragen: 1- was ist mit anderen Elementen ... 2- was ist mit anderen Werten ... Ich könnte das Attribut data-food für viele Elemente haben: div's, img's und a td's, wobei jedes einen anderen Wert hat.
dsdsdsdsd

@ParthoGanguly Sie verwenden eine Variable auf diese Weise: $ ('div [imageId = "' + variableName + '"]')
Kama

1
Diese Lösung beantwortet den Titel dieser Seite nicht wirklich. Sie suchen nach Elementen, die divs sind. Eine richtige Lösung ist eine, die für das eigentliche Element agnostisch ist.
AndroidDev

162

Obwohl es die Frage nicht genau beantwortet, bin ich hier gelandet, als ich nach einer Möglichkeit gesucht habe, die Sammlung von Elementen (möglicherweise unterschiedliche Tag-Namen) zu erhalten, die einfach einen bestimmten Attributnamen hatten (ohne nach Attributwert zu filtern). Ich fand, dass Folgendes für mich gut funktionierte:

$("*[attr-name]")

Hoffe, das hilft jemandem, der zufällig auf dieser Seite landet und nach dem sucht, was ich war :).

Update: Es scheint, dass das Sternchen nicht erforderlich ist, dh basierend auf einigen grundlegenden Tests scheint das Folgende dem oben genannten zu entsprechen (danke an Matt für den Hinweis):

$("[attr-name]")

Perfekt! Genau das, wonach ich gesucht habe.
Paulius Matulionis

Möglicherweise ... habe ich den Leistungsaspekt nicht überprüft (war zu diesem Zeitpunkt kein wichtiger Faktor für meine Verwendung).
sammy34

3
Gibt es einen Unterschied zwischen dem und $("[attr-name]")? (dh nein *)
Matthew

Ja, es gibt einen gewissen Unterschied zwischen ihnen. Sternnotation Fehler auf Firefox auslösen !!!! (Unescaped ...)
ozz

Dazu können Sie auch einen Attributwert hinzufügen, z. B.:$("[data-toggle='modal']")
MeltingDog

12

Es wird nicht als Tag bezeichnet. Was Sie suchen, wird als HTML-Attribut bezeichnet.

$('div[imageId="imageN"]').each(function(i,el){
  $(el).html('changes');
  //do what ever you wish to this object :) 
});

5

Sie können den Teilwert eines Attributs verwenden, um ein DOM-Element mithilfe des Zeichens (^) zu erkennen. Zum Beispiel haben Sie Divs wie diese:

<div id="abc_1"></div>
<div id="abc_2"></div>
<div id="xyz_3"></div>
<div id="xyz_4"></div>...

Sie können den Code verwenden:

var abc = $('div[id^=abc]')

Dies gibt ein DOM-Array von Divs zurück, deren ID mit abcfolgendem beginnt :

<div id="abc_1"></div>
<div id="abc_2"></div>

Hier ist die Demo: http://jsfiddle.net/mCuWS/


4

Verwenden Sie die Zeichenfolgenverkettung. Versuche dies:

$('div[imageId="'+imageN +'"]').each(function() {
    $(this);   
});
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.