jQuery确定匹配的类是否有给定的ID
什么是jQuery具有以下语句的id等价物?jQuery确定匹配的类是否有给定的ID
$('#mydiv').hasClass('foo')
所以你可以给一个类名并检查它是否包含一个提供的id。
类似:
$('.mydiv').hasId('foo')
您可以通过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是'is()'。应该有一个'.hasId()'选择器,因为它似乎是'.hasClass()'的一个显而易见的合作伙伴...' – 2013-12-13 15:04:28
我可能会使用$('.mydiv').is('#foo');
这就是说,如果你知道ID为什么难道不你只是把它应用到选择摆在首位?
也许代码进入一个回调函数,需要以不同的方式处理某个特定情况。所以,该函数会自动传递一个jQuery对象,并具有未知属性。在这种情况下,$('your answer')是('helpful'); – 2012-02-08 21:19:40
我可以想到任何数量的原因。如果您想应用移动设备的特定设置,例如某个元素的ID为“mobile”,该怎么办?为什么不重要。 – Placeable 2015-06-29 14:19:59
那么只有1个元素应该有一个给定的'ID',否则它应该是一些其他的属性......我想如果所讨论的元素的结构位置基于页面或客户端/用户代理改变,那么确定,但其他比... – prodigitalson 2015-06-29 14:24:02
$('#' + theMysteryId + '.someClass').each(function() { /* do stuff */ });
每个都不需要,因为永远不会有多个'#theMysteryId'。 – prodigitalson 2010-02-12 16:54:20
那么这样可以节省将它分配给变量的麻烦,检查长度是否非空,然后继续执行代码。如果选择器不匹配,jQuery不会调用“each”函数,所以它非常干净。现在,如果你只想调用一些jQuery API,那么确定。 – Pointy 2010-02-12 21:20:11
只是说我最终用index()解决了这个问题。
没有别的似乎工作。
所以对于同级元素,这是一个很好的解决办法,如果你是一个普通类第一选择,然后要为每个特定的一个不同的修改的东西。
编辑:对于那些不知道谁(像我一样),指数()给出了不同的选择相匹配,从0开始计数,这取决于它们在DOM顺序元素的索引值。只要你知道class =“foo”有多少元素,你就不需要一个id。
显然,这并不总是帮助,但有人可能会发现它很有用。
比方说,你是通过一些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
});
我很高兴你与指数解决您的问题(),什么都适用于你。我希望这将帮助其他有同样的问题。干杯:)
我知道它的老问题,但它仍然在顶部的谷歌的结果,新的jQuery提供.has()
功能
$('.mydiv').has('#foo')
对不起,但我想你错误地解释了这个问题:[has()API](http:/ /api.jquery.com/has/)报告如下: 将匹配元素的集合减少为那些具有与选择器或DOM元素匹配的*后代*的元素。 OP询问如何测试具有类'myDiv'的元素是否也有Id foo,而has()将查找具有Id'foo'的'myDiv'的后代。 – Tilt 2014-09-30 10:37:03
检查元素的ID是存在
if ($('#id').attr('id') == 'id')
{
//OK
}
你也可以通过这样做来检查id元素是否被使用:
if(typeof $(.div).attr('id') == undefined){
//element has no id
} else {
//element has id selector
}
我用这个方法对全球数据表和具体订购数据表
我想一个样式应用到一定的股利。例如,在加载时,所有具有foo类的对象都会显示出来,但我可能想要切换类foo的一个实例,该对象的id为bar。 – 2010-02-12 16:50:46
然后,您只需执行'$('#bar.foo')。toggle();'您将只拥有一个id,因为它们必须是文档独有的。如果你蚂蚁只切换那个id,如果它是类“foo”,那么只需将该类添加到id选择器。如果选择器找到一个空集,则不会发生任何事情,如果它找到一个结果集(其中只有一个结果集),那么它将切换该元素。我认为你已经过分想到了这一点。 – prodigitalson 2010-02-12 16:58:06
是的,当然,谢谢。 – 2010-02-12 17:00:05