Javascript 在jquery中注册事件与在html标记中注册事件
假设我有两个文本框:Javascript 在jquery中注册事件与在html标记中注册事件,javascript,Javascript,假设我有两个文本框: <input type="text" id="registerByTag" oninput="MyFunction()"/> <input type="text" id="registerByJquery"/> <script> $(document).ready(function() { $("#registerByJquery").bind("custominput",MyFunction);
<input type="text" id="registerByTag" oninput="MyFunction()"/>
<input type="text" id="registerByJquery"/>
<script>
$(document).ready(function()
{
$("#registerByJquery").bind("custominput",MyFunction);
//use this to call the function: $("#registerByJquery").trigger("custominput");
})
function MyFunction()
{
console.log(this);
}
</script>
$(文档).ready(函数()
{
$(“#registerByJquery”).bind(“custominput”,MyFunction);
//使用此函数调用函数:$(“#registerByJquery”).trigger(“custominput”);
})
函数MyFunction()
{
console.log(this);
}
当我触发两个文本框时,我得到两个不同的结果。
在registerByJquery上,我得到元素registerByJquery(触发事件的元素);在registerByTag上,我得到了整个HTML文档对象,我的意思是$(document),而不是触发事件的元素,这正是我想要得到的
1/为什么此
不返回相同的结果?2/如果按标记注册事件,是否可以获取触发事件的元素?我不想将参数添加到MyFunction()。内联事件侦听器调用的函数中没有显式的
此
为了访问函数中的元素,您必须将此
或事件
作为参数传入
<input oninput="MyFunction(this)"/>
现代最佳实践是使用不引人注目的事件侦听器,而不是内联的事件侦听器。它有助于分离关注点,而且由于内联方法必须位于全局名称空间中,因此有助于避免污染全局名称空间并最小化冲突
使用jQuery可以简单地组合事件并执行以下操作
$("#registerByJquery").on("input custominput", MyFunction);
这样做将使
此
可用于两个事件这正是我要寻找的。非常感谢你!
$("#registerByJquery").on("input custominput", MyFunction);