0

我一直在尝试将$.click处理程序绑定到兄弟元素,但似乎找不到正确选择要设置动画的元素的方法。这是我正在使用的 DOM 树的基本结构:

<section id="a">
    <div id="b" class="foo" draggable="true">
        <header style="cursor:pointer;">1.</header>
        <p class="foo">Bar</p>
    </div>
    <div id="c" class="foo" draggable="true">
        <header style="cursor:pointer;">2.</header>
        <p class="foo">Bar</p>
    </div>
    <!-- and so on... -->
</section>

现在,当用户单击 a 时<header>,我希望兄弟姐妹<p>执行 a jQuery.slideToggle()。此时,我有以下 JavaScript,但无济于事:

$('header').click(function() {
    $(this).parent().children("p").slideToggle('slow');
    // I also tried:
    $(this).parent().children("p.foo").slideToggle('slow');
    // but as I expected, there was no difference.
});

因此,为了澄清,一个非常冗长的版本将是:

$('div#b.foo header').click(function(){
    $('div#b.foo p.foo').slideToggle('slow');
});
$('div#c.foo header').click(function(){
    $('div#c.foo p.foo').slideToggle('slow');
});
// ...

如果这还不够清楚,请让我详细说明。

4

2 回答 2

2

你可以试试

$('header').click(function() {
    $(this).next().slideToggle('slow');
});

现场示例

.next

于 2011-05-22T16:50:28.967 回答
0

我通过在文档就绪时初始化点击处理程序解决了这个问题。解决方法如下:

$(document).ready(function() {
    $('header').click(function() {
        $(this).next().slideToggle('slow');
    });
});
于 2011-05-23T22:46:25.233 回答