JQuery выбрать класс со значением - PullRequest
8 голосов
/ 14 марта 2012

Я хочу использовать атрибуты html data-* и иметь несколько изображений, подобных этому:

<img src="http://placehold.it/100.png" data-selected="true">
<img src="http://placehold.it/100.png" data-selected="false">
<img src="http://placehold.it/100.png" data-selected="false">
<img src="http://placehold.it/100.png" data-selected="true">
<img src="http://placehold.it/100.png" data-selected="false">

как теперь я могу получить только те, у кого data-selected="true"?

Я пытался:

$("img").each(function(){
  if($(this)).attr("data-selected") == "true") {
    //do something
  }
}

но мне кажется, это не лучший способ. Есть ли прямой селектор, где я могу сделать что-то вроде

 $("img data-selected=true") ?

спасибо за вашу помощь !!

Ответы [ 7 ]

10 голосов
/ 14 марта 2012

$("img[data-selected='true']") но цитирование значения не обязательно.

PS: это называется CSS attribute selector.

7 голосов
/ 14 марта 2012

Ну, во-первых, вы должны использовать .data(...)

$("img").each(function(){
  if($(this)).data("selected") == "true") {
    //do something
  }
}

Или вы можете использовать:

$("img[data-selected='true']").something...
5 голосов
/ 14 марта 2012

Попробуйте:

$("img[data-selected='true']")

Используется атрибут , равный селектору

4 голосов
/ 14 марта 2012

Вы можете использовать атрибут селектора

$("img[data-selected='true']");

Другая альтернатива - filter()

$("img").filter(function(){ return $(this).data("selected") == "true" });

Обратите внимание, что для доступа к атрибутам данных вы можете использовать метод data(), и вам просто нужно передать вторую половину имени атрибута данных.

3 голосов
/ 15 марта 2012

Вы можете использовать

$("img[data-selected='true']")

, есть гораздо больше селекторов, чем просто теги и классы.Смотрите здесь на w3.org

3 голосов
/ 14 марта 2012

Попробуйте следующий селектор

$('img[data-selected="true"]')
2 голосов
/ 15 марта 2012

Это какой-то способ сделать это без использования jQuery:

var imgs = document.getElementsByTagName('img');

imgs.​​​​​map(function (img) {
    if (img.attributes["data-selected"].value == "true") {
        // do something
    }
});​

И вам не нужен jQuery!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...