我如何知道我的选择器在jQuery中是正确的
我有以下一段HTML代码:我如何知道我的选择器在jQuery中是正确的,jquery,Jquery,我有以下一段HTML代码: <div class="myclass" id ="class1"> <ol class="list"> <li id="li_1"> <input id="input_1" …> <acronym id="input_1" class="classabc"> </li> <li id="li_2">
<div class="myclass" id ="class1">
<ol class="list">
<li id="li_1">
<input id="input_1" …>
<acronym id="input_1" class="classabc">
</li>
<li id="li_2">
<input id="input_2" …>
<acronym id="input_2" class="classabc">
</li>
....
<li id="li_n">
<input id="input_n" …>
<acronym id="input_n" class="classabc">
</li>
</ol>
</div>
它不起作用,所以我试着:
$('div.myclass ol acronym#'+id).removeClass('classabc');
$('div.myclass ol acronym#'+id).addClass('newclass');
但它仍然不起作用。
我在代码中尝试了警报,警报有效。我觉得我的选择不对。所以我要问的是,到底有没有正确的选择器?或者我如何知道我的选择器是正确的?您要查找的基本选择器应该如下所示(因为您有重复的ID): 因此,您需要包括以下结束语:
$("acronym[id='input_" + n + "']")
注意:由于存在重复的id,此答案不使用更常见的
$(“#input_n')
选择器。为两个元素声明相同的id
是不合适的
从acronym
中删除id
,然后使用以下javascript
<input id="input_1">
<acronym class="classabc">
这里是学习css选择器的链接 理想情况下,页面上的id对于每个dom元素都应该是唯一的。考虑到如果您想通过Id查找任何元素,您可以使用Id选择器。试试这个
$('#'+id).removeClass('classabc');
$('#'+id).addClass('newclass');
这里的关键问题是:id属性对于文档必须是唯一的。您多次使用相同的id属性,这将导致使用id选择器不会产生(或不可预测的)结果 您确定不想要
'acronym#uu'+id
?id的值是多少?DOM准备就绪时代码是否正在运行?仅供参考,id是唯一的,因此不需要在其前面包含标记名。这只会增加一个额外的(不必要的)检查。[jsFiddle][1]是您的朋友。用它来测试像这样的东西。[1] :您确定“id”的值是例如“input_2”吗?这不对。您的选择器将查找
@RightSaidFred,您是对的-我打字太快,在编辑完成之前提交。答案已从原始答案编辑,但为什么要使用id
过滤器而不是#
id选择器?啊,我明白了,问题中使用了重复的id+1尽管关于使用复制品的说明可能是正确的。;)但是首字母缩写词
部分虽然多余,但并不无效,因此删除它不会改变代码的结果。我明白了,我没有注意到OP有重复的ID。很难说“#”+id
能做什么。可能会抓取它找到的第一个id,但您永远无法确定标记是否无效。我假设他传入的id
“#”+id是他想要选择的id的局部变量。我的意思是,因为$('#'+id)
使用文档。getElementById
,我们可以假设它会抓取它找到的第一个副本,但不一定能保证。至少在IE中是这样。请记住,jQuery是一个助手,而不是DOM规则强制执行的手段。
<input id="input_1">
<acronym class="classabc">
$('#'+ id).siblings('acronym').removeClass('classabc');
$('#'+id).removeClass('classabc');
$('#'+id).addClass('newclass');