1
如果我有两个处理程序连接到同一事件,是否有办法确保其中一个处理程序总是先于另一个处理程序完成。确保两个处理程序按特定顺序完成
仅用于本示例,我使用超时模拟长操作。但我可以有这样的事情:
var change_label = function() {
var option = $(".selected_option a").text();
$("li:first span").text(option);
};
$("#container").on("click", "li", function() {
var self = $(this);
var t = setTimeout(function() {
$(".sel").children("li").removeClass("selected_option");
self.addClass("selected_option");
}, 1000);
});
$("#container").on("click", "li", function() {
change_label();
});
,并确保这些文字不会改变(第二处理),直到类被首先应用?
http://jsbin.com/ayihiv/1/edit
执行订单的最佳方式是编写代码以保证它。在你的情况下,这意味着只需要添加一个处理程序,并让该处理程序在适当的时候调用'change_label()'。但有些事情告诉我,你要告诉我,这并不能完全代表实际问题。 –
@CrazyTrain是啊......我完全同意。但是像[this](http://jsbin.com/ayihiv/2/edit)这样的东西是有效的,所以这可能是我做了什么,直到我有时间重写。你还有其他更微妙的想法吗?非常感谢。 – 1252748
是的,你可以使用这种轮询,但它应该是最后的手段。如果你基本上想在第一个处理程序工作的时候禁用第二个处理程序,那么你可以改变你的事件代理基于一个类。第一个基于一个总是存在的类,但第二个基于一个类,当第一个类开始时被删除,当第一个结束时替换它。 –