jQuery找不到工作

时间:2010-05-07 10:41:22

标签: javascript jquery

这是我的HTML:

        <p class="first">blah blah <a href="" class="more">read more</a></p>
        <div class="read_more">
            <p>more text</p>
        </div>

和javascript:

$(document).ready(function(){
  $('a.more').click(function(){
    $(this).find('.read_more').slideDown();
    return false;
  });
});

似乎没有做任何事情(read_more设置为display:none)任何想法?

5 个答案:

答案 0 :(得分:5)

试试这个:

<击>     $(文件)。就绪(函数(){       $( 'a.more')。点击(函数(){         $(本).parent()的next()找到( 'READ_MORE。')了slideDown()。;         返回false;       });     });

<强>更新

<强> Here is the demo :)

代码:

$(document).ready(function(){
  $('a.more').click(function(){
    $(this).parents().find('.read_more').slideDown('slow');
    return false;
  });
});

你也可以这样做:

$(document).ready(function(){
  $('a.more').click(function(){
    $('.read_more').slideDown('slow');
    return false;
  });
});

或者这个:

$(document).ready(function(){
  $('a.more').click(function(){
    $(this).parent().next().slideDown('slow');
    return false;
  });
});

答案 1 :(得分:2)

.find(..)在当前元素中查找选择器。

你可能想要的是

$(document).ready(function(){
    $('a.more').click(function(){
        $(this).parent().parent().find('.read_more').slideDown();
        return false;
    });
});

修改

添加了另一个.parent()<a>位于<p>内且.read_more不在<p>

答案 2 :(得分:1)

$(this)指的是a.more,它没有一个名为.read的孩子,这就是为什么它不起作用

答案 3 :(得分:1)

find()无法工作的一个潜在原因是,当您调用它时,您正在寻找的元素没有被加载。

在我的情况下,我正在用编辑器插件替换文本字段,并且在我调用find()时编辑器没有加载。

如果你知道自己应该能够找到该元素,请在调用find()之前尝试使用setTimeout添加延迟。

注意:setTimeout不是解决此问题的好方法,它只是帮助诊断问题。尝试在进行find()调用之前想出一种等待元素加载的方法。

答案 4 :(得分:0)

您正试图在不存在的标签下查找 .read_more 通过将 this 替换为 document 可能会起作用