Javascript jQuery更改和单击事件
将事件绑定到元素应该类似于:Javascript jQuery更改和单击事件,javascript,jquery,events,Javascript,Jquery,Events,将事件绑定到元素应该类似于: $( document ).on( 'change', '#mySelect', showEvent ); $( document ).on( 'click', '#mySelect', showEvent ); function showEvent() { console.log( event.target ); } 但是,通过如下所示的简单测试,将更改和单击事件绑定到对象mySelect,它们会在不同的元素上触发(仅通过更改文档上的任意位置的选择和单击来
$( document ).on( 'change', '#mySelect', showEvent );
$( document ).on( 'click', '#mySelect', showEvent );
function showEvent() {
console.log( event.target );
}
但是,通过如下所示的简单测试,将更改和单击事件绑定到对象mySelect,它们会在不同的元素上触发(仅通过更改文档上的任意位置的选择和单击来更改)
两个问题:
选择器
Type:String
用于筛选触发事件的选定元素的后代的选择器字符串。如果选择器为null或省略,则事件总是在到达选定元素时触发
取自
您将选择器用作jQuery对象,此方法主要用于将事件绑定到动态生成的元素。因此,您可以将事件直接绑定到jQuery对象,如下所示:
var mySelect = $( '#mySelect' );
mySelect.on( 'change', mySelect, showEvent )
.on( 'click', mySelect, showEvent );
function showEvent() {
console.log( event.target );
}
如果是动态生成的,则删除$
包装,只需将其作为字符串提供即可
var mySelect = '#mySelect';
$( document ).on( 'change', mySelect, showEvent );
$( document ).on( 'click', mySelect, showEvent );
function showEvent() {
console.log( event.target );
}
$(文档).on('change',mySelect,showEvent)代码>无效。如果您确切知道要将事件附加到哪个元素,那么将事件委托给文档有什么意义?@Stryner可能mySelect
元素是在页面中动态生成的(如果是这样的话,无论如何都不应该使用document
,太全局了)@斯特莱纳:我知道这是无效的,因此我提出了问题1。关于你的问题,Jeff Noel是对的,我有一个单页应用程序,因此页面和元素是动态加载的,因此我知道的唯一元素总是存在于文档和正文中。你的建议正确,但我的问题仍在等待答案。为什么以错误的方式绑定更改事件(它不会!!!)而单击则不会?您没有遵循jQuery文档的建议
var mySelect = '#mySelect';
$( document ).on( 'change', mySelect, showEvent );
$( document ).on( 'click', mySelect, showEvent );
function showEvent() {
console.log( event.target );
}