什么是jQuery具有与以下语句等效的id?
$('#mydiv').hasClass('foo')
所以你可以给出一个类名并检查它是否包含一个提供的id。
类似的东西:
$('.mydiv').hasId('foo')
答案 0 :(得分:157)
您可以通过combining multiple selectors将该逻辑烘焙到选择器中。例如,我们可以定位具有给定id的所有元素,它们也具有特定的类:
$("#foo.bar"); // Matches <div id="foo" class="bar">
这应该与您在CSS中编写的内容类似。请注意,它不适用于所有#foo
元素(尽管应该只有一个),并且它不适用于所有.bar
元素(尽管可能有很多)。它只会引用符合这两个属性的元素。
jQuery还有一个很棒的.is
method,可以让你判断元素是否具有某些特质。您可以针对字符串选择器,HTML元素或其他jQuery对象测试jQuery集合。在这种情况下,我们只需要对字符串选择器进行检查:
$(".bar:first").is("#foo"); // TRUE if first '.bar' in document is also '#foo'
答案 1 :(得分:43)
我可能会使用$('.mydiv').is('#foo');
那说如果你知道Id为什么你不能在第一时间将它应用到选择器?
答案 2 :(得分:18)
更新:抱歉误解了这个问题,删除了.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>
答案 3 :(得分:7)
假设您正在迭代某些DOM对象,并且想要找到并捕获具有特定ID的元素
<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()解决了你的问题,什么对你有用。我希望这会帮助其他人解决同样的问题。干杯:)
答案 4 :(得分:4)
$('#' + theMysteryId + '.someClass').each(function() { /* do stuff */ });
答案 5 :(得分:4)
只是说我最终使用index()解决了这个问题。
其他似乎没有用。
因此,对于兄弟元素,如果您首先通过公共类进行选择,然后想要针对每个特定类修改某些内容,那么这是一个很好的解决方法。
编辑:对于那些不知道的人(像我一样),index()给出了与选择器匹配的每个元素的索引值,从0开始计算,具体取决于它们在DOM中的顺序。只要您知道class =“foo”有多少元素,就不需要id。
显然这并不总是有帮助,但有人可能觉得它很有用。
答案 6 :(得分:3)
检查元素的ID是否存在
if ($('#id').attr('id') == 'id')
{
//OK
}
&#13;
答案 7 :(得分:1)
您还可以通过执行以下操作来检查是否使用了id元素:
if(typeof $(.div).attr('id') == undefined){
//element has no id
} else {
//element has id selector
}
我将此方法用于全局dataTables和特定的有序dataTables