Jquery 等待addClass执行

Jquery 等待addClass执行,jquery,Jquery,我对jquery有一个问题。我想做的是让同一个按钮根据类执行两个不同的操作。看起来很简单,但我被卡住了。我所拥有的是: $(".edit-comment").click(function(){ $(".edit-comment").removeClass("active-edit"); $(".comment-input").removeClass("active-edit"); $(this).prev().children().addClass("active-edi

我对jquery有一个问题。我想做的是让同一个按钮根据类执行两个不同的操作。看起来很简单,但我被卡住了。我所拥有的是:

$(".edit-comment").click(function(){
    $(".edit-comment").removeClass("active-edit");
    $(".comment-input").removeClass("active-edit");
    $(this).prev().children().addClass("active-edit");
    $(this).addClass("active-edit");
    $(this).prev().children().focus();
 });

 $(document).on("click", ".active-edit", function() {
     console.log("edit");
 });
问题是,我在第一次单击时立即获得控制台日志,我不需要它,当单击“编辑注释”时,它应该只添加类和removeClass,然后在第二次单击时,它应该记录“编辑”

我尝试了javascript setTimeOut和回调,但没有成功

编辑:

共享一些html:

<tr class="alert-comment">
 <td colspan="6"><input type="text" value="" class="comment-input" /></td>
 <td class="edit-comment" title="Click the text to edit"><span class="edit-comment-icon"></span></td>
</tr>

您可能希望将第二个单击函数移动到第一个运行所需的单击函数中。即:

$(".edit-comment").click(function(){
    $(".edit-comment").removeClass("active-edit");
    $(".comment-input").removeClass("active-edit");
    $(this).prev().children().addClass("active-edit");
    $(this).addClass("active-edit");
    $(this).prev().children().focus();

    $('.parent-container').on("click", ".active-edit", function() {
        console.log("edit");
    });
});

这当然不是一个很好的解决方案。如果您共享一些html,有人可以为您指出更好的方向。

您在第一次运行时,html中有一个.active编辑,这就是正在执行的单击。提供您的html,也许还有比此更好的解决方案您可以尝试在第一次单击函数中返回false以防止事件传播。该事件可能会冒泡到文档并触发另一个单击功能。@MarcosPérezGude htmlshared@MarcBaumbachreturn false`不起作用,当我添加return false时,第一次单击会起作用,第二次完全不起作用$document.onclick.。活动编辑是一个*delegate`事件。它实际上绑定到文档,只检查event.target是否处于活动编辑状态。此解决方案将反复重新绑定该事件,从而运行console.logedit;每次单击多次。没错,某些父容器应该用作选择器。将on替换为one也可以解决此问题。然而,如前所述,一些html将有助于提供更高质量的答案。