Jquery 等待addClass执行
我对jquery有一个问题。我想做的是让同一个按钮根据类执行两个不同的操作。看起来很简单,但我被卡住了。我所拥有的是: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
$(".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将有助于提供更高质量的答案。