2016-07-08 76 views
0

我有一个选择框,我已经附加一个事件监听器类似下面如何检查选择框是手动触发还是通过.trigger()触发?

$('#select').on('change', function(){ 
    console.log("Changed") 
}) 

这个回调函数将使用触发方法,如果我手动更改选择框触发,并通过jQuery的

$('#select').trigger('change'); 

所以我的要求来到这里,有没有什么办法来检查变化事件监听器里面是否触发事件手动或通过.trigger('change') meth OD

我需要的恰恰是,

$('#select').on('change', function(){ 
    if(eventtriggeredmanually){ 
    console.log("Changed"); // need to do some logics if it is triggered manually not through .trigger('change') method 
    } 
}) 
+0

有点不清楚'触发,你再使用第一种是有什么办法可以check' ? – guradio

+0

如果你想区分它们,我将编辑 –

+0

然后你可以在触发'$('#select')之前设置自定义数据,比如'$('#select')。data(“manuallyTriggered”,true)'' .trigger('change')'语句,并且在您的事件监听器代码中,您可以检查这些数据以发挥作用。 – vijayP

回答

0

没有任何简单的修复。

我的建议是让两个事件处理程序:

$('#select').on('changeProg', function(){ 
    console.log("Changed through code") 
    toDo() 
}) 
$('#select').on('change', function(){ 
    console.log("Changed manually") 
    toDo() 
}) 
function toDo(){ ... } 

,当你想通过代码

$('#select').trigger('changeProg'); 
+0

比这更好的解决方案。 –

+0

明白了。 http://stackoverflow.com/questions/6692031/check-if-event-is-triggered-by-a-human –

+0

感谢您的回答。 –