jQuery 仅在 DOM 中单击时查找下一个表单元素

Posted

技术标签:

【中文标题】jQuery 仅在 DOM 中单击时查找下一个表单元素【英文标题】:jQuery find only the next form element on click in the DOM 【发布时间】:2013-08-05 07:21:18 【问题描述】:

我很难做到这一点。基本上有一个微博帖子列表。在每个帖子之后直接有一个编辑表单,但最初设置为在 css 中不显示。我只想显示(slideToggle)直接在点击编辑链接($this)的微博之后的编辑表单。

注意:在下面的描述中我只提到。我的意思是页面上有很多编辑表单,但我只想显示article.post之后点击a.edit_this的那个。

<div id="microblog">
    <article class="post">
      <figure class="av">
    <img src="avatarurl" >
      </figure>
      <div class="post_text">
    <h3>Post title <span> <a href="#" class="edit_this">Edit link</a></span>   <span>Delete</span></h3>
    <div class="postmeta">Date<span>Time</span></div>
           <p>Post body</p>
    <br>
    <a href="#" class="details">Details</a>
      </div>
    </article>  <-- End of micropost

    <form class="edit_form">  <-- Need to show only this when clicking on the .edit_this 
                                  link in the above micropost
    </form>

    <article class="post"> <-- Beginning of next micropost
      <figure class="av">
    <img src="avatarurl" >
      </figure>
      <div class="post_text">
    <h3>Post title <span> <a href="#" class="edit_this">Edit link</a></span>   <span>Delete</span></h3>
    <div class="postmeta">Date<span>Time</span></div>
           <p>Post body</p>
    <br>
    <a href="#" class="details">Details</a>
      </div>
    **</article>**  <-- End of micropost

【问题讨论】:

【参考方案1】:
$('.edit_this').on('click',function()    
    $(this).closest('.post').next('.edit_form').slideToggle();
);

如果每个表单编辑不止一篇文章,您可能必须使用 nextAll()

【讨论】:

感谢您的回答,但它似乎不起作用。如果我向它添加 preventDefault() ,那么它会阻止默认行为,但 slideToggle 不起作用。 .edit_form 是否总是紧跟在相应文章的后面? ".edit_form 总是紧跟在相应文章之后吗?" - 是的。奇怪的。似乎对我不起作用。会仔细检查。【参考方案2】:

我不太确定上面的微博在哪里,但是:

如果它实际上是之后(不在)微博,那么如果表单是非常下一个元素:

$this.next().slideToggle();

如果它跟随微博但中间有一些元素:

$this.nextAll("selector for edit form").first().slideToggle();

如果它在微博,那么:

$this.find("selector for edit form").slideToggle();

【讨论】:

以上是关于jQuery 仅在 DOM 中单击时查找下一个表单元素的主要内容,如果未能解决你的问题,请参考以下文章

jQuery - 更改 iframe src 时仅在第二次单击时触发

Ninja 表单:多部分表单 - 字段单击的下一步 (jQuery)

仅在按钮单击时添加记录

在 jQuery Success Function 上查找特定的 DOM

Jquery 表单仅在您第一次提交时工作,而不是第二次

使用 Jquery 在第一次单击时禁用提交按钮