Что такое jQuery, имеет эквивалент id следующего утверждения?
$('#mydiv').hasClass('foo')
чтобы вы могли указать имя класса и проверить, что он содержит предоставленный идентификатор.
что-то вроде:
$('.mydiv').hasId('foo')
Что такое jQuery, имеет эквивалент id следующего утверждения?
$('#mydiv').hasClass('foo')
чтобы вы могли указать имя класса и проверить, что он содержит предоставленный идентификатор.
что-то вроде:
$('.mydiv').hasId('foo')
Вы можете выпекать эту логику в селекторе комбинируя несколько селекторов. Например, мы могли бы нацеливать все элементы с заданным id, которые также имеют определенный класс:
$("#foo.bar"); // Matches <div id="foo" class="bar">
Это должно выглядеть похоже на то, что вы пишете в CSS. Обратите внимание, что это не относится ко всем элементам #foo
(хотя должно быть только одно), и оно не будет применяться ко всем элементам .bar
(хотя их может быть много). Он будет ссылаться только на элементы, которые соответствуют двум атрибутам.
jQuery также имеет отличный метод .is
, который позволяет определить, обладает ли элемент определенными качествами. Вы можете протестировать коллекцию jQuery против селектора строк, элемента HTML или другого объекта jQuery. В этом случае мы просто проверим его против селектора строк:
$(".bar:first").is("#foo"); // TRUE if first '.bar' in document is also '#foo'
Я бы, вероятно, использовал $('.mydiv').is('#foo');
Если бы вы знали Id, почему бы вам просто не применить его к селектору в первую очередь?
Я знаю его старый вопрос, но он все еще на вершине результатов Google, новый jQuery предоставляет .has()
функцию
$('.mydiv').has('#foo')
Скажем, что вы выполняете итерацию через некоторые объекты DOM, и вы хотите найти и поймать элемент с определенным идентификатором
<div id="myDiv">
<div id="fo"><div>
<div id="bar"><div>
</div>
Вы можете написать что-то вроде поиска
$('#myDiv').find('#bar')
Обратите внимание, что если вы должны использовать селектор классов, метод find вернет все соответствующие элементы.
или вы можете написать функцию итерации, которая будет выполнять более сложную работу.
<div id="myDiv">
<div id="fo"><div>
<div id="bar"><div>
<div id="fo1"><div>
<div id="bar1"><div>
<div id="fo2"><div>
<div id="bar2"><div>
</div>
$('#myDiv div').each(function() {
if($(this).attr('id') == 'bar1')
//do something with bar1
});
Такой же код можно легко изменить для селектора классов.
<div id="myDiv">
<div class="fo"><div>
<div class="bar"><div>
<div class="fo"><div>
<div class="bar"><div>
<div class="fo"><div>
<div class="bar"><div>
</div>
$('#myDiv div').each(function() {
if($(this).hasClass('bar'))
//do something with bar
});
Я рад, что вы решили свою проблему с помощью index(), что когда-либо работает для вас. Я надеюсь, что это поможет другим с той же проблемой. Приветствия:)
$('#' + theMysteryId + '.someClass').each(function() { /* do stuff */ });
Просто чтобы сказать, что я в конце концов решил это, используя index().
НИЧЕГО не работало другое.
Итак, для элементов сиблинга это хорошая работа, если вы сначала выбираете общий класс, а затем хотите изменить что-то по-разному для каждого конкретного.
EDIT: для тех, кто не знает (например, меня) index() дает значение индекса для каждого элемента, который соответствует селектору, считая от 0, в зависимости от их порядка в DOM. Пока вы знаете, сколько элементов есть с class= "foo", вам не нужен идентификатор.
Очевидно, что это не всегда поможет, но кому-то это может показаться полезным.
Проверьте, существует ли идентификатор элемента
if ($('#id').attr('id') == 'id')
{
//OK
}
Вы также можете проверить, используется ли элемент id:
if(typeof $(.div).attr('id') == undefined){
//element has no id
} else {
//element has id selector
}
Я использую этот метод для глобальных dataTables и конкретных упорядоченных данныхTables