jQuery确定一个匹配的类是否有一个给定的ID
什么是jQuery的id等价于下面的语句?
$('#mydiv').hasClass('foo')
所以你可以给一个类名称,并检查它是否包含一个提供的ID。
就像是:
$('.mydiv').hasId('foo')
您可以通过组合多个select器将该逻辑烧入select器 。 例如,我们可以使用给定的ID来定位所有的元素,这些元素也有一个特定的类:
$("#foo.bar"); // Matches <div id="foo" class="bar">
这应该看起来类似于你在CSS中写的东西。 请注意,它不适用于所有#foo
元素(尽pipe应该只有一个),并不适用于所有的.bar
元素(虽然可能有很多)。 它只会引用符合这两个属性的元素。
jQuery也有一个伟大的.is
方法 ,可以让你判断一个元素是否具有某些特质。 您可以针对stringselect器,HTML元素或其他jQuery对象testingjQuery集合。 在这种情况下,我们只是用一个stringselect器来检查它:
$(".bar:first").is("#foo"); // TRUE if first '.bar' in document is also '#foo'
我可能会使用$('.mydiv').is('#foo');
这就是说,如果你知道Id为什么不把它应用到select器呢?
我知道它的老问题,但它仍然在谷歌结果顶部,较新的jQuery提供.has()
函数
$('.mydiv').has('#foo')
假设您正在迭代一些DOM对象,并且想要find并捕获具有特定ID的元素
<div id="myDiv"> <div id="fo"><div> <div id="bar"><div> </div>
你可以写一些喜欢找的东西
$('#myDiv').find('#bar')
请注意,如果您要使用类select器,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 });
相同的代码可以轻松修改类select器。
<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 });
我很高兴你用索引()解决了你的问题,什么对你有用。我希望这会帮助其他同样的问题。 干杯:)
$('#' + theMysteryId + '.someClass').each(function() { /* do stuff */ });
只是说我最终用index()解决了这个问题。
没有其他人似乎工作。
所以对于兄弟元素来说,这是一个很好的解决方法,如果你是第一次select一个普通的类,然后想修改每个特定的东西。
编辑:对于那些不知道(像我一样)的索引()给出了匹配select器的每个元素的索引值,从0开始计数,取决于它们在DOM中的顺序。 只要你知道class =“foo”有多less个元素,你就不需要一个id。
显然这并不总是有帮助,但有人可能会觉得它有用。
检查元素的ID是否存在
if ($('#id').attr('id') == 'id') { //OK }
你也可以通过这样做来检查id元素是否被使用:
if(typeof $(.div).attr('id') == undefined){ //element has no id } else { //element has id selector }
我使用这种方法的全球dataTables和特定的有序dataTables