Знайдіть усі елементи з певним значенням атрибута в jquery


88

Мені потрібно знайти всі елементи, що мають спеціальне значення атрибута.

Ось div, який мені потрібно знайти (у мене їх багато ..)

<div imageId='imageN'>...

Мені просто потрібно прокрутити divs, які є imageId='imageN'


6
Я б рекомендував використовувати class="imageN"заради дійсного HTML. Або те, або data-imageId="imageN"заради дійсного HTML5. З першим ви зможете використовувати селектор класу.
Andy E,

Енді, причина цього полягає в тому, що ці div додаються динамічно із-за коду і мають різні ImageId, але однаковий клас '.
Пабук

3
Ви можете мати кілька класів, class="image imageN"якщо це допомагає.
Валь

Чому б тоді не вибрати ім'я класу, якщо вони вже мають однаковий клас?
Praxis Ashelin

Відповіді:


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

Щоб перевірити єдине існування атрибуту, незалежно від того, яке значення, ви можете використовувати замість цього селектор: $('div[imageId]')


4
@ThiefMaster - Якщо значення атрибута не є постійним (тобто воно буде змінюватися), то як його знайти?
Розробник

пара запитань: 1- що з іншими елементами ... 2- що з іншими значеннями ... Я міг би мати атрибут data-food для багатьох елементів: div, img та td, де кожен має різне значення.
dsdsdsdsd

@ParthoGanguly Ви використовуєте змінну таким чином: $ ('div [imageId = "' + variableName + '"]')
Кама

1
Це рішення насправді не відповідає назві цієї сторінки. Ви шукаєте елементи, які є divs. Правильним рішенням є агностичне щодо фактичного елемента.
AndroidDev

164

Хоча це не точно відповідає на питання, я потрапив сюди, шукаючи спосіб отримати колекцію елементів (потенційно різні імена тегів), які просто мали задане ім'я атрибута (без фільтрації за значенням атрибута). Я виявив, що для мене добре працюють:

$("*[attr-name]")

Сподіваюся, це допоможе тому, хто потрапить на цю сторінку, шукаючи те саме, що і я :).

Оновлення: Здається, що зірочка не потрібна, тобто на основі деяких базових тестів, наступне, здається, еквівалентно вищезазначеному (спасибі Метту, що вказав на це):

$("[attr-name]")

Ідеально! Саме те, що я шукав.
Паулій Матуліоніс,

Цілком можливо ... Я не перевіряв аспекти продуктивності (на той час це не було важливим фактором для мого використання).
sammy34

3
Чи є якась різниця між цим і $("[attr-name]")? (тобто ні *)
Матвій

Так, між ними є певна різниця. Помилка підняття позначення зірочкою у Firefox !!!! (Невмілий ...)
ozz

додавши до цього, ви також можете включити значення атрибутів, наприклад:$("[data-toggle='modal']")
MeltingDog

12

Це не називається тегом; те, що ви шукаєте, називається атрибутом html.

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

5

Ви можете використовувати часткове значення атрибута для виявлення елемента DOM за допомогою знака (^). Наприклад, у вас є такі div:

<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-масив div, які мають ідентифікатор, що починається з abc:

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

Ось демонстрація: http://jsfiddle.net/mCuWS/


4

Використовуйте конкатенацію рядків. Спробуйте це:

$('div[imageId="'+imageN +'"]').each(function() {
    $(this);   
});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.