jQuery 选择器?

标签 jquery html

使用jQuery我正在尝试创建一个函数来显示和隐藏已单击的 table/tr 下面的 DIV,但是当我单击其中一个时,所有 DIV 都会向上滑动,也会向下滑动,但它不起作用。

我尝试了 if ($(".container:first").is("hidden")) 但我猜不是单击的元素下的第一个元素,而是文档上的第一个元素。

我如何让它工作?

基于以下示例。

<html>
    <head>
        <script type="text/javascript" src="jquery-1.4.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $(".header").click(function(){
                    if ($(".container").is("hidden")){
                           $(".container").slideUp("slow");
                    } else {
                       $(".container").slideDown("slow");
                    }
                });
            });
        </script>
    </head>

    <body>
        <table class="header">
            <tr><td>Row1</td></tr>
        </table>
        <div class="container">Container 1</div>

        <table class="header">
           <tr><td>Row2</td></tr>
        </table>
        <div class="container">Container 2</div>
    </body>
</html>

最佳答案

您只想获取下一个容器,因此您可以使用$.next():

$(".header").click(function(){
  $(this).next(".container").slideToggle();
});

在线演示:http://jsbin.com/eyuwi3/edit

已更新

评论中要求的是使其“在 tr 元素上工作”。如果您单击表中的任何位置,表的单击事件最终都会触发 - 除非子级停止传播。

如果此代码不起作用,那么您的问题出在其他地方。确保表格和 .container 元素之间没有任何元素。 $.next() 仅选择直接 sibling ,这是您的示例代码建议您拥有的。

如果问题仍然存在,您可以尝试以下操作:

$(".header").click(function(){
  $(this).nextAll(".container:first").slideToggle();
});

在线演示:http://jsbin.com/eyuwi3/2/edit

关于jQuery 选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2343257/

相关文章:

javascript - 如何使用 iframe 动态创建 jquery 对话框?

javascript - Jquery Array Object - 如何将后缀变量添加到索引名称

jquery - 是否可以将鼠标光标放在元素后面或鼠标光标是否具有 z-index?

html - 当我没有告诉它时,表格中的粗体文本

html - 将鼠标悬停在表中 <hr> 上的效果

jquery - Easy Slider jQuery 插件使用 CSS 将数字按钮居中

javascript - 将 XPath 添加到 chrome 扩展或 javascript

javascript - 如何在 TinyMce 编辑器(After The Deadline 插件)中将 onClick 事件更改为 onMouseOver?

javascript - 在 SharePoint 上使用 JQuery。脚本在两种浏览器上的 Fiddle 中都可以工作,但在 IE 的页面上不起作用

html - polymer 数据变化不反射(reflect)