我正在工作的项目有一个代码,其中有几个子组件被加载到主视图中,其中一些实际上具有相同的ID。
加载后代码部分如下所示
<div id="container">
<div></div>
...
<div id="subject"></div>
..
<div id="some_other"></div>
...
<div id="subject"></div>
...
</div>
<div id="container2">
<div></div>
...
<div id="subject"></div>
...
<div id="some_other"></div>
...
<div id="subject"></div>
...
</div>
我知道保留具有相同ID的元素并不是一个好习惯。但在这种情况下,我无法实际修改HTML。
所以现在按照我的逻辑,我想隐藏一些元素(在容器中有id&#39; 主题&#39;) div元素。 为了问题,我想要隐藏带有ID&#39;主题&#39; 的第一个div,因为有多个元素带有id&#39; subject&#39;。
我尝试的方法是
containerElt = $("#container");
relevantDiv = $("#subject",containerElt);
relevantDiv.hide();
但它会隐藏容器div中的所有元素,其中包含id&#39; subject&#39;。是否有任何顺利的方式来实现我的要求。
如果可以对第n个元素进行此操作,那将会很优雅。但是绰绰有余的人可以告诉我如何为第一个带有id&#39; subject&#39;。&#39;。
的div。答案 0 :(得分:2)
使用:
containerElt = $("#container");
// find the element with `subject` id(first matched element only)
containerElt.find('[id="subject"]:first').hide();
// or
containerElt.find('[id="subject"]:eq(0)').hide();
答案 1 :(得分:1)
参见JSFiddle https://jsfiddle.net/tf1qyr4m/
要获得第n个元素.eq(index) - index基于零。 所以:
relevantDiv = $('[id="subject"]').eq(0);
relevantDiv.hide();
隐藏第一个。
编辑:请注意,您必须使用$(&#39; [id =&#34; subject&#34;]&#39;)才能选择多于第一个元素。