不同脚本中不同的“点击”回调:我可以控制执行顺序吗?

时间:2012-08-31 23:22:40

标签: javascript jquery javascript-events

我有一个管理播放列表剪辑的脚本。它包含一个回调,指定当用户点击剪辑时如何处理播放列表:

$('div.clip').bind("click.playlist", function() {
  ...
});

我现在计划添加jquery-tabs,并希望创建第二个带有第二个回调的脚本,该脚本指定当用户点击剪辑时如何处理选项卡内容:

$('div.clip').bind("click.tabs", function() {
  ...
});

这是我的问题: 当用户点击剪辑时,我希望“click.tabs”回调在“click.playlist”回调之前执行。有谁知道怎么做?

3 个答案:

答案 0 :(得分:3)

imho我会以另一种方式做到这一点:

$('div.clip').bind("clip.playlist", function() {
  ...
});

$('div.clip').bind("clip.tabs", function() {
  ...
});

然后点击:

$('div.clip').click(function(){
    $(this).trigger('clip.playlist').trigger('clip.tabs');
});

获得事件链的完全控制。

答案 1 :(得分:1)

同一元素上的事件处理程序运行的顺序是无法保证。不要依赖它,在大多数事件系统中都是如此,它们被设计为分离的。如果你确实需要它,你需要设置一个处理器,它按顺序调用你需要的两个函数。

而不是

$('div.clip').bind("click.playlist", function() {
  doSomething();
});


$('div.clip').bind("click.tabs", function() {
  doSomethingElse();
});

$('div.clip').bind("click", function() {
  doSomething();
  doSomethingElse();
});

答案 2 :(得分:0)

如果您使用

怎么办?
$('div.clip').click(function()
{
    func1().func2()
});