2013-08-20 101 views
0

我的团队正在开发一个Web应用程序, 因为我们有这两个js文件中定义一个click事件的特定元素的功能。如何设置优先级在JavaScript

$("#manage_teams_register_btn").live("click",function(){ 

// codes here 

}) 

现在我在一个js文件中追加html元素,在其他我从数据库获取数据并追加它。 是否有可能在这些实时点击功能中设置一些优先级,以便在其他人之前进行调用!?

我不能像把一个活的点击所有内容到功能和其他JS或任何其他解决方案定义直播点击调用它使用的解决方案,我需要把这些了现场点击函数中的优先级。有没有办法我们可以做到这一点?

+0

这一切都取决于他们正在使用的jQuery版本。 – DevlshOne

+1

这是一个新项目吗? [**。生活(),因为V1.7 **被弃用,因为V1.9除去(http://api.jquery.com/live/) – Stijn

+0

雅可以是我们将切换到。对() –

回答

4

这个模型可能有帮助

$("#manage_teams_register_btn").live("click",function(){ 
     function1(); 
     function2(); 
}); 

function function1(){ 

} 

function function2(){ 

} 

只维持一个click event否则horriblly杀死可读性OD代码。

+0

大概你必须在ajax调用函数之后添加setTimeout,以确保第二个函数在ajax完成后运行。 functionAjax(); setTimeout(function(){ nonAjaxFunction(); }); –

+0

是的,什么@VovaLando告诉是真的。请记住异步策略。 –

+0

如果函数1涉及函数1(成功回调)内的异步任务调用函数2以确保优先级。设置超时并不总是可靠的。 – GoodSp33d

1

jQuery观察器部分使用队列来显示附加的事件。所以如果你写

$("#manage_teams_register_btn") 
    .on("click.firstEventNamespace", function() { 
     console.log("Hello"); 
    }) 
    .on("click.secondEventNamespace", function() { 
     console.log("World!"); 
    }); 

你会得到“HelloWorld!”在控制台一样,没有问题=)

但是,如果你从不同的文件中附上您的活动,你应该考虑使用一些模式,比如抽象工厂为你的控制。 jQuery中

0

事件处理程序的准确顺序,他们被束缚总是执行。 Ref.

您只需确保绑定事件的不同代码将它们绑定到相同的元素上,并且它们按您希望执行处理程序的顺序执行(包含)。