繁体   English   中英

event.currentTarget问题

[英]event.currentTarget issue

我正在调试我的javascript代码中的一个问题,其中一个变量未正确设置。 经过一番研究后,我发现变量没有被填充,因为它从一个不存在的事件属性中获取了它的值。 在这种情况下,它从event.currentTarget派生它的值,它奇怪地为null。

所以我现在有点困惑。 我总是认为event.currentTarget总是指向持有触发事件的侦听器的任何元素。 那么在什么情况下event.currentTarget实际上是null?

好吧,我终于想通了。

问题在于事件的处理方式。 如下所示,事件对象本身不仅要由其各自的处理函数处理; 它也将由另一个函数处理,该函数仅在处理程序中进行的AJAX调用成功返回时调用。 但是,一旦成功函数在AJAX调用下执行,事件对象就会失去一些上下文,即currentTarget属性。 我认为这是因为一旦浏览器开始在success函数中执行代码,我们就不会直接在处理程序的范围内。

$('#element').click(function(e) {

    // bunch of lines of code here

    $.ajax({
       type: 'POST',
       url: // url,
       ...,
       success: function(response) {

           // more lines of code here

           callAnotherFunction(e);
           // When we invoke the above function, we pass the event in as a 
           // parameter, but the event has already lost some of its context
           // due to scope change.
       }
    });

})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM