我如何知道我的选择器在jQuery中是正确的

我如何知道我的选择器在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">

我有以下一段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">
          <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');