选择id不是id的所有项目

时间:2014-06-02 11:18:15

标签: jquery selector

我想要的是item1点击隐藏ID不是item1的所有项目。

html:

<span id="select1">item1</span>
<span id="2">item1</span>
<div style="clear:both"></div>

<img src="http://www.lorempixel.com/100/100" id="item1">
<img src="http://www.lorempixel.com/100/100" id="item1">
<img src="http://www.lorempixel.com/100/100" id="item1">
<img src="http://www.lorempixel.com/100/100" id="item1">

<img src="http://www.lorempixel.com/100/100" id="item2">
<img src="http://www.lorempixel.com/100/100" id="item3">
<img src="http://www.lorempixel.com/100/100" id="item4">
<img src="http://www.lorempixel.com/100/100" id="item2">

这是演示版:Demo

5 个答案:

答案 0 :(得分:1)

正如Madhu所说,它不是可验证的HTML,但是如果你想继续它: http://jsfiddle.net/5kJTU/

$('#select1').on('click',function(){

    $('img').not("#item1").hide();

});

答案 1 :(得分:0)

对不同的元素使用相同的id不是一个好方法。 而是以这种方式使用它。

 $('#select1').click(function(){
$(".item1").hide();
});

我更新了你的小提琴并将其与答案一起附加。 请参阅小提琴:http://jsfiddle.net/eRg7h/2/

答案 2 :(得分:0)

在改为像Madhu建议的类之后,在jquery $(".item1").hide();

中使用适当的类选择器

eddited jsfiddle

答案 3 :(得分:0)

你当前的代码只是在item1.hide()

之前遗漏了哈希#
$('#select1').click(function(){
    $('#item1').hide();
});
上面的Madhu虽然是正确的。如果您有重复元素,请考虑更改为类而不是ID。

答案 4 :(得分:0)

在单个页面中为多个元素设置相同的ID将被验证为无效标记。根据标准ID,每个元素应该是唯一的,所以你不能这样做。

要解决此问题,您可以将id属性更改为class,然后您可以尝试以下代码:

标记:

<span id="item1">item1</span> <!--do id like this-->
<span id="item2">item2</span> <!--do id like this-->

<div style="clear:both"></div>

<img src="http://www.lorempixel.com/100/100" class="item1"> <!--changed id to class-->
<img src="http://www.lorempixel.com/100/100" class="item1">
<img src="http://www.lorempixel.com/100/100" class="item1">
<img src="http://www.lorempixel.com/100/100" class="item1">
<img src="http://www.lorempixel.com/100/100" class="item2">
<img src="http://www.lorempixel.com/100/100" class="item2">
<img src="http://www.lorempixel.com/100/100" class="item2">
<img src="http://www.lorempixel.com/100/100" class="item2">

jQuery的:

$(function(){  // doc ready block starts

    $('span[id^="item"]').on('click', function () {
       var show = this.id; // "item1" if item1 clicked
       $('img').hide();  // hide all img first
       $('.' + show).show(); // show only click matched
    });

});

Demo