首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery -区分编程事件调用和用户事件调用

jQuery -区分编程事件调用和用户事件调用
EN

Stack Overflow用户
提问于 2014-06-18 22:37:50
回答 2查看 183关注 0票数 1

我有一个类似于这样的jQuery事件侦听器:

代码语言:javascript
运行
复制
$('input[data-name="PretaxAmount"]').live('change', function () {
  ....
}

我在javascript中有一个以编程方式调用它的位置,如下所示:

代码语言:javascript
运行
复制
pretaxAmount.change();

对象"pretaxAmount“的定义如下:

代码语言:javascript
运行
复制
pretaxAmount = row.find('input[data-name="PretaxAmount"]');

onchange事件侦听器通过编程和人工交互被调用。我需要能够分辨出不同之处,这样我才能知道人类何时在浏览器中触发了事件,而不是在页面加载时自动触发事件的javascript。我在这方面看到了一些堆栈溢出解决方案,但它们似乎不太适合我的特定场景。

我将给出如何用我的代码实现这一目标的特定代码示例的答案,而不是指向其他问题或文章的链接。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-18 22:55:15

有一种方法可以区分这一点:

代码语言:javascript
运行
复制
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);
票数 1
EN

Stack Overflow用户

发布于 2014-10-19 16:50:57

检查originalEvent属性的存在如何?

代码语言:javascript
运行
复制
var pretaxAmount = row.find('input[data-name="PretaxAmount"]');
$(pretaxAmount).change(function(e){
    if(!!e.originalEvent){
        console.log("human");
    }else{
        console.log("CPU");
    }
})

jQuery在将事件包装到自己的对象时提供了此属性。

代码语言:javascript
运行
复制
pretaxAmount.change(); //prints CPU
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24296117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档