Jquery代码只执行第一条语句

Jquery代码只执行第一条语句,jquery,Jquery,我有下面的HTML代码 <div class="testimonial closed"> <p class="author">Author name</p> <p class="quote">This is a quote</p> </div> 我的问题是代码的第二部分永远不会执行 我向控制台添加了一些输出,可以看到代码的第二部分从未执行过,因为无论我用作者类单击段落多少次,我总是会看到“以作者名称打

我有下面的HTML代码

<div class="testimonial closed">

    <p class="author">Author name</p>

    <p class="quote">This is a quote</p>

</div>
我的问题是代码的第二部分永远不会执行

我向控制台添加了一些输出,可以看到代码的第二部分从未执行过,因为无论我用作者类单击段落多少次,我总是会看到“以作者名称打开”的消息

你知道为什么会这样吗

是否因为在第一次单击时应用的新类“opened”在“else if”语句中不可用?如果不是,我如何让它认识到该类已从“关闭”更改为“打开”


提前感谢您的时间和帮助。

问题是因为您只在加载时运行代码,因此不会应用
打开的
元素的
click()
处理程序。相反,使用单个
click()
处理程序并切换父元素上的类。试试这个:

$("p.author").click(function() {
    $(this).closest('.testimonial').toggleClass("opened closed");
});

您告诉代码在页面加载时运行,并且html在调用时始终关闭。因此,第一句话总是正确的。它永远不会再次运行,因此将永远不会到达其他语句。将
更改为
,另一种情况将始终发生。您必须检查click事件中的条件

我想这会得到你想要的

jQuery(document).ready(function($){ 
    $("p.author").click(function() {
        var parent = $(this).parent();
        $(parent).toggleClass("opened closed");
    });
});

是的,同意您的回答谢谢您的解释。请注意,如果您用空格分隔多个类,则可以为单个
toggleClass()
调用提供多个类。
jQuery(document).ready(function($){ 
    $("p.author").click(function() {
        var parent = $(this).parent();
        $(parent).toggleClass("opened closed");
    });
});