针对错误元素的更改事件激发的JQuery
JQuery on change event firing for the wrong element
我有两个<select>
元素:select.exerciseType
和#moduleTopic
,每个元素都有自己的处理程序包在document
上。我认为重要的是要知道select.exerciseType
是普通的,并且可能有多个。他们的活动是:
$(document).ready(function() {
$(document).on("change", $("select.exerciseType"), function(e) {
<!--Code not really important-->
}
$(document).on("change", $("#moduleTopic"), function(e) {
<!--Code not really important-->
}
}
我的问题是,当我在其中一个选择中更改所选选项时,这两个事件都会触发。为什么on()函数中的选择器不起作用,我如何使它起作用?
jQuery
的语法。处理程序上的语法为.on( events [, selector ] [, data ], handler )
,其中第二个参数为string
在您的情况下,由于它不是string
,因此它被省略,并且event
总是在到达所选元素时触发!
$(document).ready(function() {
$(document).on("change", "select.exerciseType", function(e) {});
$(document).on("change", "#moduleTopic", function(e) {});
});
你能用这个代码代替吗:
$("#moduleTopic").change(function() {
// code executes here
});
编辑---
您可以使用类名,并通过在函数中使用$(this)
来检测正在更改的<select>
。
您不需要document.ready,您也只需要指定选择器,而不是检索它。即
// class example
$(document).on("change", "select.exerciseType", function(e) {
// Code not really important
});
// ID example
$(document).on("change", "#moduleTopic", function(e) {
// Code not really important
});
相关文章:
- 在创建对象后附加一个jquery事件
- 将jQuery事件应用于所有类元素
- Jquery事件处理程序仅适用于匿名函数
- 如何在jQuery事件处理程序中存储和重用超时
- 无线电输入更改的jQuery事件未启动
- 我应该/如何清除mousemove JQuery事件侦听器
- 是否可以在jQuery事件中更改Angular范围
- jQuery事件侦听器多次启动
- jQuery 事件处理程序堆叠
- 如何在不删除类似侦听器的情况下从父对象中删除jQuery事件侦听器
- 一个接一个地触发jQuery事件
- 在JQuery事件中查找父元素
- 堆叠jQuery事件(动画)
- 在jquery事件中引用javascript对象
- 动态添加对象的jQuery事件处理程序
- jQuery事件命名空间是否可以包含破折号
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- 没有为Ajax添加的新元素注册Jquery事件
- 动态创建的DOM元素上的jQuery事件绑定
- jQuery事件未在动态生成的内容上激发