出于某种原因,我在数字输入上有一个额外的更改处理程序。我不能为我的生活找出它的来源。任何人都可以指出我如何追踪这个胭脂事件处理程序分配的方向?在chrome dev工具中,如果我检查元素并查看事件处理程序区域,它只指向(1)jquery和(2)undefined。
答案 0 :(得分:1)
如果不希望使用其他处理程序,则可以始终使用unbind
:
$("#id").unbind('change').bind("change", handler);
当然,你必须考虑到每一个可能的案例,所以一个完整的解决方案将是:
$("#id")
.off('change')
.die('change')
.unbind('change')
.on("change", handler);
答案 1 :(得分:1)
jquery绑定的所有事件都在$( target ).data( 'events' )
;
这表示带有键的对象,因为事件名称包含函数数组。
例如,直接在stackoverflow上的控制台中尝试此操作:
$('a').data('events').click[0].handler
;
列出jquery对象分配的每个事件类型回调尝试:
$.each( $( youSelector ).data('events'), function(v,k){
console.log( v +":");
$(this).each( function(){
console.log( this.handler );
});
console.log("------------------");
});
找出他们来自哪个文件的方法是从资源标签中搜索输入的控制台中的处理程序代码中搜索:)
答案 2 :(得分:0)
这些答案并不是我想要的,但我能够找到处理程序的来源。我正在使用webshims和一个名为overlay的jquery工具。显然,叠加层在渲染页面时执行脚本标记中的代码,并在实际应用叠加层时再次执行。