jQuery определяет, имеет ли соответствующий класс заданный идентификатор



Что такое jQuery имеет идентификатор, эквивалентный следующему утверждению?



$('#mydiv').hasClass('foo')


таким образом, вы можете дать имя класса и проверить, что он содержит предоставленный идентификатор.



что-то типа:



$('.mydiv').hasId('foo')
367   8  

8 ответов:

вы можете испечь эту логику в селектор с помощью объединение нескольких селекторов. Например, мы могли бы выбрать все элементы с заданным идентификатором, которые также имеют определенный класс:

$("#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'); Что сказал, Если вы знаете код, почему бы вам просто применить его к селектору в первую очередь?

обновление: извините, неправильно понял вопрос, удалены .has() ответ.

еще один альтернативный способ, создать .hasId() плагин

// the plugin
$.fn.hasId = function(id) {
  return this.attr('id') == id;
};

// select first class
$('.mydiv').hasId('foo') ?
  console.log('yes') : console.log('no');

// select second class
// $('.mydiv').eq(1).hasId('foo')
// or
$('.mydiv:eq(1)').hasId('foo') ?
  console.log('yes') : console.log('no');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="mydiv" id="foo"></div>
<div class="mydiv"></div>

предположим, что вы перебираете некоторые объекты 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
}

Я использую этот метод для глобальных таблиц данных и конкретных упорядоченных таблиц данных

Comments

    Ничего не найдено.