jquery - 如何使用 jQuery 定位未点击的同一类项目?

标签 jquery

我拥有的是同一类的 3 个 div,但具有唯一的 id,当我单击一个框时,我想隐藏其他 2 个框。

这不是问题,我可以通过一些 if/else 或 case 语句来实现它,但我想知道是否有一种更通用/有效的方法来隐藏同一类的所有元素,而不是被点击的那个?

<div id="boxes">
    <div id="box1" class="box">Box 1</div>
    <div id="box2" class="box">Box 2</div>
    <div id="box3" class="box">Box 3</div>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
    $('.box').click(function() {
        $(this).html('hi');
        if ($(this).attr('id') == 'box1')
        {
            $('#box2').hide('slow');
            $('#box3').hide('slow');
        }
       .......... more if's     
    });
});
</script>

最佳答案

您可以使用.not过滤功能引用“其他”框。这样,即使框不一定是 DOM 树中的同级,或者存在一些不是框的其他同级,代码也将正常工作。

var $boxes = $('.box');
$boxes.click(function() { 
    $(this).html('hi'); 
    $boxes.not(this).hide('slow');
}); 

请注意,我正在缓存 $('.box') 的结果以提高性能 - 毫无疑问,它不会引人注目,但没有理由不这样做。

关于jquery - 如何使用 jQuery 定位未点击的同一类项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8490897/

相关文章:

javascript - 如何禁用 Blogger API 的删除和更新帖子选项

javascript - Jquery .val() 不适用于 Firefox

javascript - 使用逗号分割json数据

javascript - 检测表单是否已更改,脚本不起作用

JQuery *(所有元素)选择器,不包括具有某些类的跨度标签。我怎样才能做到这一点?

javascript - jQuery .data() 和插件

jquery - 如何在中继器/网格控件内实现 Jquery 选项卡?

javascript - 如何在鼠标悬停时打开 Material 设计菜单

jquery - 表排序器排序;多个复选框、多列

jquery - 尝试使用 jQuery 制作自定义滚动