Найти все элементы с определенным значением атрибута в jQuery


мне нужно найти все элементы, которые имеют специальное значение атрибута.

вот это div, мне нужно найти (у меня их много..)

<div imageId='imageN'>...

мне просто нужно пройти через дивов, которые имеют imageId='imageN'

5 72

5 ответов:

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

чтобы проверить единственное существование атрибута, независимо от того, какое значение, вы можете использовать селектор ths вместо этого:$('div[imageId]')

хотя это точно не отвечает на вопрос, я приземлился здесь при поиске способа получить коллекцию элементов (потенциально разных имен тегов), которые просто имели заданное имя атрибута (без фильтрации по значению атрибута). Я обнаружил, что следующее работает хорошо для меня:

$("*[attr-name]")

надеюсь, что это поможет кому-то, кто случайно приземлится на этой странице, ища то же самое, что и я :).

обновление: Похоже, что звездочка не требуется, т. е. основываясь на некоторых основных тестах, следующее, По-видимому, эквивалентно приведенному выше (спасибо Мэтту за указание на это):

$("[attr-name]")

это не называется тегом; то, что вы ищете, называется атрибутом html.

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

вы можете использовать частичное значение атрибута для обнаружения элемента DOM с помощью знака ( ^ ). Например, у вас есть дивы, как это:

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

вы можете использовать этот код:

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

это вернет массив DOM divs, которые имеют идентификатор, начинающийся с abc:

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

вот демо: http://jsfiddle.net/mCuWS/

использовать конкатенацию строк. Попробуйте это:

$('div[imageId="'+imageN +'"]').each(function() {
    $(this);   
});