我有这个HTML:
<li>
<input type="radio" class="checkbox" name="myName" id="Id001"/>
One
<img class="resetRadio" src="star.png"/>
</li>
<li>
<input type="radio" class="checkbox" name="myName" id="Id002"/>
Two
<img class="resetRadio" src="star.png"/>
</li>
<li>
<input type="radio" class="checkbox" name="myName" id="Id003"/>
Three
<img class="resetRadio" src="star.png"/>
</li>
我想删除除第一个之外的所有img
元素的li
。
在HTML文档中,还有许多其他li
,input
和img
元素。
我唯一拥有的是输入的名称(myName
)。
我试过了:
var radios = $(':radio[name="myName"]');
radios.parent().remove(".resetRadio");
要删除所有img
,但它不起作用(首先我要删除所有内容,然后除第一个外全部删除)
答案 0 :(得分:3)
要从大于索引0的每个列表项中删除图像,您可以执行以下操作:
$("li:gt(0) img.resetRadio").remove();
如果您只想删除单选按钮的兄弟图像,您可以检查兄弟姐妹并从中删除:
$(":radio[name=myName]").nextAll("img.resetRadio").remove();
答案 1 :(得分:1)
您的代码会删除类resetRadio
的无线电按钮的父母 - 这是您没有的。您希望删除所述父母的子女 - 使用班级resetRadio
。
改进你的第二行以反映这个逻辑:
radios.parent().find(".resetRadio").remove();
删除除第一个更改第一行以外的所有内容:
var radios = $(':radio[name="myName"]:gt(0)');
答案 2 :(得分:0)
除了第一个li
元素外,这将删除所有li
元素直接后代的图像。
$('li:not(:first-child) > img').remove()
请注意,它使用了有效的CSS选择器,因此您可能希望使用CSS
隐藏图像li:not(:first-child) > img {
display: none;
}
所以你不会只依靠JS。