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