0

我正在尝试做一些常规的点击功能,我必须在点击元素之外找到一个元素。这是一些代码:

<div class="options">
    <span class='comment_now'>kommentér</span>
</div>

<div class="write_comment_wrap">
    <form method="post" class="write_comment_form">
        <textarea class="write_comment" name="write_comment" placeholder="skriv din kommentar..."></textarea>
        <input type="submit" value="skriv" class="global_button">
    </form>
</div>​

JS:

$('.comment_now').click(function(){
    $(this).closest('.write_comment_wrap').slideToggle();
});​

什么都没有发生。我试图发出警报,以确定我是否在该函数内部。伙计们,我使用了错误的遍历功能。

4

4 回答 4

1

尝试 :

$('.comment_now').click(function(){
    $(this).closest('.options').next('.write_comment_wrap').slideToggle();
});​

演示:http: //jsfiddle.net/HwQLw/

于 2012-05-30T07:59:37.963 回答
0

.closest是在同一个dom树中找到最近的元素,但在你的情况下,.write_comment_wrap.comment_nowspan的父级的兄弟。

$('.comment_now').click(function(){
    $(this).parent().next('.write_comment_wrap').slideToggle();
});​
于 2012-05-30T07:59:25.720 回答
0

试试这个:

$('.comment_now').click(function(){
    $(this).parent().next('.write_comment_wrap').slideToggle();
});​

http://jsfiddle.net/dcVqf/

于 2012-05-30T08:03:03.420 回答
0

closest向上遍历 DOM 树。DOM 树为.comments_now

   - body, etc.
     - .options
       - .comments_now

所以$(this).closest('.write_comment_wrap')不会找到你任何东西,因为.comments_now没有这样的祖先。

你可以做的是:

 $(this).closest('.options').next('.write_comment_wrap').slideToggle();
于 2012-05-30T08:03:38.293 回答