0

我有例如:

$('#field').click(function(){
   alert('One');
   alert('Two');
})

我想使用触发器:

$('#field').trigger('click');

可以为此添加功能吗?

如果我使用触发器,我只想执行alert('One');

也许作为...

$('#field').click(function(){
   alert('One');
   if(this != trigger){
      alert('Two');
   }
})
4

4 回答 4

3

.trigger实际上可以向事件发送参数(它需要是一个数组)。

$('#field').trigger('click', [true]);

然后像这样修改事件:

$('#field').click(function(e, trigger){
   alert('One');
   if(!trigger){
      alert('Two');
   }
})

演示:http: //jsfiddle.net/NTICompass/Rkr9S/

于 2012-08-20T20:08:29.673 回答
1

在触发事件的情况下,相应的事件对象将具有一个属性isTrigger: true。所以你可以做这样的事情:

$('#field').click(function(e) {
   alert('One');
   if (!e.isTrigger) {
      alert('Two');
   }
});
于 2012-08-20T20:14:00.613 回答
1

不确定我是否理解正确,但您可以使用第二个参数将变量传递给触发器:

$('#field').click(function(e, obj) {
    alert('One');
    if ( obj.two ) {
        alert('Two');
    }
});    

$('#field').trigger('click', {
   two: false
});

http://jsfiddle.net/t5nZz/

于 2012-08-20T20:08:38.893 回答
0

如果我正确地阅读了您的问题,那么您希望在手动触发它时做一些不同的事情。

第 1 节

someGlobalVariable = true;
$('#field').trigger('click');

第 2 节

$('#field').click(function(){
   alert('One');
   if(!someGlobalVariable){
      alert('Two');
   }
   someGlobalVariable = false;
})
于 2012-08-20T20:07:54.527 回答