我有一个类似于这样的jQuery事件侦听器:
$('input[data-name="PretaxAmount"]').live('change', function () {
....
}
我在javascript中有一个以编程方式调用它的位置,如下所示:
pretaxAmount.change();
对象"pretaxAmount“的定义如下:
pretaxAmount = row.find('input[data-name="PretaxAmount"]');
onchange事件侦听器通过编程和人工交互被调用。我需要能够分辨出不同之处,这样我才能知道人类何时在浏览器中触发了事件,而不是在页面加载时自动触发事件的javascript。我在这方面看到了一些堆栈溢出解决方案,但它们似乎不太适合我的特定场景。
我将给出如何用我的代码实现这一目标的特定代码示例的答案,而不是指向其他问题或文章的链接。提前谢谢。
发布于 2014-06-18 22:55:15
有一种方法可以区分这一点:
function handlePretaxChange(e) {
if (!e) {
// triggered manually by code
} else {
// triggered by user
}
}
$(document).on('change', 'input[data-name="PretaxAmount"]', handlePretaxChange);
// trigger in your code (assumes you only have one item named pretaxAmount):
var pretaxAmount = row.find('input[data-name="PretaxAmount"]');
handlePretaxChange.call(pretaxAmount[0], null);
发布于 2014-10-19 16:50:57
检查originalEvent属性的存在如何?
var pretaxAmount = row.find('input[data-name="PretaxAmount"]');
$(pretaxAmount).change(function(e){
if(!!e.originalEvent){
console.log("human");
}else{
console.log("CPU");
}
})
jQuery在将事件包装到自己的对象时提供了此属性。
pretaxAmount.change(); //prints CPU
https://stackoverflow.com/questions/24296117
复制相似问题