1

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

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

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

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

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

4

3 回答 3

3

恕我直言,我会以另一种方式做到这一点:

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

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

然后启动它:

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

获得对事件链的完全控制。

于 2012-08-31T23:26:53.647 回答
1

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

代替

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


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

$('div.clip').bind("click", function() {
  doSomething();
  doSomethingElse();
});
于 2012-08-31T23:29:24.423 回答
0

如果你用过

$('div.clip').click(function()
{
    func1().func2()
});
于 2012-08-31T23:26:06.917 回答