Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jquery中注册事件与在html标记中注册事件_Javascript - Fatal编程技术网

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);