检测未单击的列表项

时间:2014-09-28 21:23:33

标签: javascript jquery

我有一小部分列表项:

<ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
    <li>Item 5</li>
</ul>

每个列表项都是可点击的。点击某个项目后,我想隐藏所有未点击的项目。

$('.locations li').click(function() {

    // hide list items NOT clicked        

});

任何人都知道我怎么能发现它?

4 个答案:

答案 0 :(得分:3)

隐藏所有元素,然后显示当前元素。以下应该可以解决问题。

$('.locations li').click(function() {

    $('.locations li').hide();
    $(this).show();     

});

答案 1 :(得分:0)

试试这个:

$('ul.list li ').click(function(){
  $('ul.list li').hide(); // Hide the elements
  $(this).show(); // Show the clicked element
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="list">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
    <li>Item 5</li>
</ul>

来自维也纳的问候

答案 2 :(得分:0)

如果您尝试这样做很容易:

http://jsfiddle.net/csdtesting/zq0q77qu/

$('li').click(function() {
  $('li').not($(this)).hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
  <li>Item 4</li>
  <li>Item 5</li>
</ul>

答案 3 :(得分:0)

上述答案的改进版本将是: http://jsfiddle.net/zq0q77qu/2/

这更有效,因为您只是对项目进行一次查询。 请注意兄弟姐妹的查询,因为上面的答案会为您提供页面上的每个标记,因为我希望您不需要。

$('li').click(function() {
 $(this).siblings().hide();   
});