当我在 js 中记录点击处理程序时,(var clickHandler = button.onclick;) 它会按预期给出以下内容:
clickHandler:function () {
alert("onclick - original onclick handler");
}
但是,当我记录 jQuery 单击处理程序 (var clickHandler = jQuery('#button').click;) 时,我得到:
clickHandler:function (a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)}
为什么有区别?如何获取该函数的句柄,以便我可以将其重新分配给另一个事件,例如。鼠标按下?
(我需要重新分配一个我无法控制的现有 js 事件,因此它还没有使用 jQuery 添加)。
<input type="text" name="name_input" id="name_input" />
<a href="#" id="button">Click</a>
<script>
var input = document.getElementById("name_input");
var button = document.getElementById("button");
input.onchange = function(event) {
alert("Change");
};
//reassign onclick to onmousedown
button.onclick = function() {
alert("onclick - original onclick handler");
};
//reassign onmousedown handler
var clickHandler = button.onclick;
// var clickHandler = jQuery('#button').click;
console.log('clickHandler:' + clickHandler);
button.onmousedown = clickHandler;
</script>
最佳答案
我想你想要这个:
var clickHandler = jQuery('#button')[0].click;
jQuery([selector]) 返回一个数组。
关于jquery - 如何使用 jQuery 重新分配 Javascript 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22600140/