javascript - jQuery 事件在 .load() 之后触发两次

标签 javascript jquery events

我遇到过一个问题,即调用 $.load() 后 jQuery 事件会触发两次。事件处理程序放在 load() 回调函数中,这似乎是事件在脚本中触发两次的唯一地方。

我尝试添加 event.stopPropogation() 和 event.preventDefault(),因为这些似乎是触发多个 jQuery 事件的常见建议。我不确定我的代码是否冒泡不正确或什么。任何反馈都会有所帮助。

以下是您看到该行为的部分代码的摘录。

$("div.questions").load("question_source.php #simplified_a", function(){

                ...

                // Line 1
                $("#some_id").change(function(){
                    cantBeNegative(this);
                    adjusted_gross_income = $(this).val();
                    console.log(adjusted_gross_income);
                    // event.stopPropagation();
                    // event.preventDefault();
                });

你可以清楚地看到事件触发了两次,我在其中设置了 console.log 位。任何建议将不胜感激!


编辑

好的,我根据一些建议检查了live page上的所有内容,出现问题时肯定只有一个

存在。因此,这似乎不是 HTML 问题。

我还检查了事件是否真的被调用了两次,据我所知,事件只被调用了一次。

现在,我添加了一个附加到文档的 .on() 事件,它在动态创建的元素上调用,并且只触发一次。 .on() 不会在 .load() 回调中调用。这是在页面上的其他输入框之一上使用的示例,它可以正常工作:

$(document).on('change', "#SWA_mothers_income", function(){
console.log("mothers income changes from on()");
});

因此,它可以正常工作,但是当在 .load() 回调函数中对同一输入进行测试时,它会触发两次,无论它是如何调用的。所以,在我看来,这几乎肯定是 .load() 的问题。我不会完全称自己为这方面的专家,所以如果有人能弄清楚这个问题,我很想知道答案。就目前而言,我将使用 .on() 重写这段代码。


第二次编辑

添加 $("#some_id").unbind('change'); 在 'change(function()) 位起作用之前!

最佳答案

添加这一行

$("#some_id").unbind('change');

之前

$("#some_id").change(function(){});

关于javascript - jQuery 事件在 .load() 之后触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18595298/

相关文章:

javascript - 使用附加音频

javascript - 如何获得此 react ajax响应并设置状态

javascript - Kurento 媒体服务器 HelloWorld Javascript 示例 webSocket 错误

javascript - ACE 编辑器 : create a new editor dynamically

javascript - Ember.js - 在 Controller /路由器链上传播事件

javascript - 奇怪的 Angular/引导下拉行为

JavaScript : access return of other function

jQuery.html() 返回无效的 IMG

javascript - 多次调用 HTML5 视频结束事件

javascript - 单击单选按钮时事件的触发顺序是什么?