在.load()之后,jQuery事件触发两次
jQuery event firing twice after .load()
我遇到一个问题,在调用$.load()后,jQuery事件会触发两次。事件处理程序被放置在load()回调函数中,这似乎是唯一一个在脚本上触发两次事件的地方。
我尝试添加event.stopPropagation()和event.prventDefault(),因为这些似乎是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位,事件启动了两次。任何建议都将不胜感激!
编辑
好吧,我根据一些建议查看了直播页面上的所有内容,肯定只有一个<div id="questions">在问题发生时存在。所以,这似乎不是HTML的问题。
我还检查了该事件是否真的被调用了两次,据我所知,该事件只被调用了一次。
现在,我在文档中添加了一个.on()事件,该事件在动态创建的元素上调用,并且只触发一次。on()未在.load()回调中调用。下面是一个在页面上的其他输入框上使用的例子,它可以毫无问题地工作:
$(document).on('change', "#SWA_mothers_income", function(){
console.log("mothers income changes from on()");
});
因此,这可以正常工作,但当在.load()回调函数中对同一输入进行测试时,无论如何调用,它都会触发两次。所以,在我看来,几乎可以肯定这是.load()的问题。我不会完全称自己为这方面的专家,所以如果有人能解决这个问题,我很想知道答案。目前,我将使用.on().重写此代码
第二次编辑
添加$("#some_id").ubind("change");在'change(function())位成功之前!
添加此行
$("#some_id").unbind('change');
之前
$("#some_id").change(function(){});
我不是说这会解决你的问题,但你需要传入事件才能引用它。
$("#some_id").change(function(event){
cantBeNegative(this);
adjusted_gross_income = $(this).val();
console.log(adjusted_gross_income);
event.stopPropagation();
event.preventDefault();
});
您可能有两个div,其中包含一类"questions",因此您可能要绑定change函数两次。
如果您将更改函数更新为以下内容,则在重新添加更改事件之前,将解除对其的绑定。这将确保您只绑定了一次函数;
$("#some_id").unbind('change').change(function(event) {
event.preventDefault();
cantBeNegative(this);
adjusted_gross_income = $(this).val();
console.log(adjusted_gross_income);
});
- Jquery点击事件必须点击两次
- 防止双击执行两次jQuery post请求
- 单击jQuery会激发两次
- 为什么jQuery下拉列表需要单击两次
- 我的jQuery加载请求是否被调用了两次
- $().单击需要按两次.Jquery JSP
- JQuery脚本没有'Don’我不能工作两次
- jquery on触发器按键事件两次
- jQuery 方法调用了两次
- Rails-jQuery 为什么我必须单击两次才能显示 jQuery 效果
- 为什么要声明两次 jQuery
- jQuery切换了Firefox中所需的两次点击
- 如何使用 jQuery 交换网页中的两个图像(连续两次点击)
- jQuery 每个循环返回数据两次
- 更改jquery需要点击两次
- 发送前jQuery!确认警报两次
- JQuery定位:我可以滚动到正确的位置一次,但不能滚动两次
- 我必须点击两次才能使用jQuery激活函数
- Parameters .replace()两次jQuery插件不起作用
- 点击复选框时触发两次jQuery点击事件