【问题标题】:Apply click event only to the targeted class jQuery仅将点击事件应用于目标类 jQuery
【发布时间】:2014-09-26 05:02:38
【问题描述】:

这个问题之前可能有人问过,但我无法掌握答案,因为每个问题都有很多代码。我不知道怎么用语言表达。我想你们一旦看到代码就会明白这种情况。

HTML

                            <div class="row">
                                <div class="large-9 columns">
                                    <h3>By Christian Christiansen</h3>
                                </div>
                                <div class="large-3 columns">
                                    <p class="raty"></p>
                                </div>
                                <div class="large-11 large-offset-1 columns">
                                    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ex, quasi nisi optio, earum facilis perspiciatis temporibus nobis nam velit incidunt. Recusandae accusamus pariatur, explicabo iure ea ex perspiciatis perferendis quam!</p>
                                </div>
                                <div class="large-8 columns">
                                    <img src="images/comments.png" alt="">
                                    <p class="inline_cmt">Comments (3)</p>
                                </div>
                                <div class="large-2 columns">
                                    <img src="images/reply.png" alt="">
                                    <p class="inline_rply">Reply</p>
                                </div>
                                <div class="large-2 columns">
                                    <img src="images/report.png" alt="">
                                    <p class="inline_rep">Report</p>
                                </div>
                                <div class="large-12 columns reply_box">
                                    <label>
                                        <textarea placeholder="submit your reply here.."></textarea>
                                    </label>
                                    <a href="#" class="button right">Submit</a>
                                </div>
                                <hr>
                            </div>
                            <div class="row">
                                <div class="large-9 columns">
                                    <h3>By Christian Christiansen</h3>
                                </div>
                                <div class="large-3 columns">
                                    <p class="raty"></p>
                                </div>
                                <div class="large-11 large-offset-1 columns">
                                    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ex, quasi nisi optio, earum facilis perspiciatis temporibus nobis nam velit incidunt. Recusandae accusamus pariatur, explicabo iure ea ex perspiciatis perferendis quam!</p>
                                </div>
                                <div class="large-8 columns">
                                    <img src="images/comments.png" alt="">
                                    <p class="inline_cmt">Comments (3)</p>
                                </div>
                                <div class="large-2 columns">
                                    <img src="images/reply.png" alt="">
                                    <p class="inline_rply">Reply</p>
                                </div>
                                <div class="large-2 columns">
                                    <img src="images/report.png" alt="">
                                    <p class="inline_rep">Report</p>
                                </div>
                                <div class="large-12 columns reply_box">
                                    <label>
                                        <textarea class="custom_textarea" placeholder="submit your reply here.."></textarea>
                                    </label>
                                    <a href="#" class="button right">Submit</a>
                                </div>
                                <hr>
                            </div>


<div class="large-12 columns reply_box">
     <label>
       <textarea placeholder="submit your reply here.."></textarea>
     </label>
     <a href="#" class="button right">Submit</a>
</div>

我的代码中有多次相同的 html,我想要实现的是,我希望在单击类名为 inline_reply 的元素时出现类名为 reply_boxdiv。我已经使用jQuery切换方法来实现这一点,代码是,

jQuery

    $(".inline_rply").click(function() {
        $(".reply_box").toggle();
    });  

我的问题: 每当我点击回复按钮时,所有类名为 reply_box 的元素都会被切换,而 我只想切换我点击过的元素。我不想为所有div's 添加不同的类名,因为会有很多帖子。有没有简单的方法来做到这一点?我听说这可以使用this 来完成。但我不知道如何。任何有一个简单例子的人都将不胜感激。我想我没有把你们弄糊涂。

【问题讨论】:

  • 类名 large-2large-12 的 div 之间的相关性是什么?是错字吗??
  • 它们不相关。我知道这很令人困惑。我刚刚随机选择了div's,只是为了显示我的班级存在的位置。

标签: javascript jquery html css class


【解决方案1】:

因为我认为您必须使用 next 关键字,如下所示

$(".inline_rply").click(function() {
        $(this).closest('div').next('.reply_box').toggle();
    });

** 根据您的 html 更新 **

还有一个 div 包含文本 Report,因此您可以再次使用 next,如下所示

$(".inline_rply").click(function() {
        $(this).closest('div').next().next('.reply_box').toggle();
    });

next()按照选择器逐个遍历节点。

希望对你有帮助...

【讨论】:

  • 这也有效。现在我很困惑使用哪一个 LOL。哪个可能性更大?
  • .closest() api 向上遍历并找到第一个并停止遍历,但是 .parent() 遍历每个父级直到结束文档。我想说 .closest().parent() 快。
  • .closest() api 现在对我有用。所以我认为我应该使用它,因为我有速度优势。
【解决方案2】:

我认为你只是应用这个并检查可能会解决你的问题。

$(".inline_rply").click(function() {
        $(this).parent().next(".reply_box").toggle();
    });

更新答案

$(".inline_rply").click(function() {
        $(this).parent().next().next(".reply_box").toggle();
    }); 

Demo

Demo 2

【讨论】:

  • 不起作用。但我猜不是你的错误。我已经更新了我的问题的html 部分,其中出现了两次我想要应用点击的相同代码。
【解决方案3】:

使用this 定位当前元素

$(".inline_rply").click(function() {
      $(this).closest('div.large-2').next(".reply_box").toggle(); // this will be the clicked 
});  

.closest() 将获取使用类名指定的最近的父元素,使用 next() 您可以定位下一个包含元素的 .reply_box 类。

【讨论】:

  • 谢谢closestparent ?我应该使用哪一个?两者现在都在工作。
  • @ThomasSebastian 你应该使用`.closest()。
猜你喜欢
  • 2013-06-24
  • 2017-06-10
  • 1970-01-01
  • 2022-01-24
  • 2011-05-16
  • 2012-05-17
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多