jQuery $(this).find无效

时间:2011-02-17 11:56:46

标签: jquery jquery-selectors

我正在制作一个包含很多文章的手风琴。

当我使用以下内容时,我有jQuery工作,只有它会在页面上的每篇文章上滑动/关闭:

$('article a').click(function() {
    $('article').find('h3').slideToggle('fast');
});

理论上这应该有用,但它没有做任何事情:

$('article a').click(function() {
    $(this).find('h3').slideToggle('fast');
});

您可以在此处查看演示:http://jsfiddle.net/CfqGG/

我哪里错了?

5 个答案:

答案 0 :(得分:16)

理论上应有效,因为在您的点击事件中,this指的是<a>,而不是<article>,因为您的点击事件受到约束到<a>

试试这个:

$('article a').click(function() {
    $(this).parent().find('h3').slideToggle('fast');
});

答案 1 :(得分:7)

$(this).siblings('h3').slideToggle('fast');

this引用a元素,find搜索其descendants中的元素。 h3不是后代,而是兄弟姐妹。

答案 2 :(得分:3)

你需要这个:

$('article a').click(function() {
    $(this).closest('article').find('h3').slideToggle('fast');
});

Check out the DEMO

答案 3 :(得分:1)

在您的代码中,$('article a')和随后的$(this)正在寻找锚点内部。

答案 4 :(得分:1)

这是更新代码,检查出来,你需要指定它的兄弟,欢呼

$(document).ready(function() {    
    //hides articles
    $('article h3').hide();  
    //article accordian
    $('article a').click(function() {
        $(this).siblings('h3').slideToggle('fast');
    });
});