Выбор JQuery на основе более чем одной переменной (конкретной строки) - PullRequest
1 голос
/ 20 февраля 2012

Я хочу создать пару, если в операторах, захватывающих идентификатор с использованием, содержится (* =) и img, равное (=).Что я могу делать не так?

if($("div[id*='Point_'], [img='gray.png']").length > 0 ) {

// do something gray
}

if($("div[id*='Point_'], [img='red.png']").length > 0 ) {

// do something red
}
<div id="Point_1">
    <img src="gray.png">
</div>
<div id="Point_2">
    <img src="red.png">
</div>

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

Вы пытаетесь использовать селектор тегов как селектор атрибута. Если вы хотите сопоставить тег <img>, где атрибут src равен gray.png, тогда правильный селектор - $('img[src="gray.png"]').

Кроме того, это может или не может быть правильным для того, что вы хотите сделать, но запятая в селекторе jQuery действует как OR, так что вы говорите: «Дайте мне любой элемент <div>, где атрибут id содержит текст 'Point_' ИЛИ ​​любой элемент <img>, где src соответствует 'gray.png'. " Если это то, что вы хотите, тогда хорошо.

Однако представляется более вероятным, что вы хотите выбрать элемент <img> с src, равным gray.png, который находится внутри <div> с идентификатором, содержащим 'Point_', поэтому селектор должно быть:

$('div[id*="Point_"] img[src="gray.png"]')
2 голосов
/ 20 февраля 2012

Если вы пытаетесь выбрать конкретную строку, вам нужно удалить запятую из вашей строки.Разделение селекторов запятой выделяет несколько элементов на основе любого селектора.Запятая не выбирает совпадения на всех селекторах.Смотрите здесь .

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