Javascript 如何修复事件方法jQuery中文档对象上的TypeNull错误
我有一个代码块,我想放在事件处理程序中,但我得到了错误“TypeError:无法读取null的属性'dispatchEvent'。我知道dispatchEvent是在null对象引用上调用的,我猜它就是DOM对象 这是密码(我刚知道这是一种生活): 然后在我的滚动事件中:Javascript 如何修复事件方法jQuery中文档对象上的TypeNull错误,javascript,jquery,dom-events,Javascript,Jquery,Dom Events,我有一个代码块,我想放在事件处理程序中,但我得到了错误“TypeError:无法读取null的属性'dispatchEvent'。我知道dispatchEvent是在null对象引用上调用的,我猜它就是DOM对象 这是密码(我刚知道这是一种生活): 然后在我的滚动事件中: $(document).scroll(function(){ loadData(); }); function loadData(){ (function($,document){ //...lots of
$(document).scroll(function(){
loadData();
});
function loadData(){
(function($,document){
//...lots of code here(minified)...
})(document)
}
如何在函数中传递文档值
我了解到我可以在iLife函数的第一个参数($)的事件方法中使用$(this).parent(),如下所示
$(document).scroll(function(){
loadData($(this).parent());
});
function loadData(documentSelector){
(function($,document){
//...lots of code here(minified)...
})(documentSelector)
}
但是第二个参数(document)如何传递它的值呢?。请帮帮我,我已经为此争论了一段时间。你把参数传递给IIFE,就像传递给任何函数一样:
(函数(a,b){…}(ARG1,ARG2))代码>。请注意,在第一个示例中,IIFE中的$
指的是文档
(已传递),而文档
参数是未定义的
,因为它根本没有传递。是的,我猜。但是如果没有附加事件,代码将运行。只有当我把它放在事件处理程序中时,我才在null对象error上得到dispatchEvent,或者在事件处理程序中传递文档对象的正确方法是什么?对于第一个参数,请不要将任何自定义参数传递给实际的事件处理程序函数,因为该处理程序是从事件队列调用的,并且仅传递事件对象。您必须创建一个包装函数来传递您自己的参数:element.addEventListener('click',function(e){handler(e,arg1,arg2);})代码>。包装器当然也可以是现有的函数,可以是声明的,也可以存储在变量中,甚至可以是对象属性中。如果需要在包装器中使用document对象,那么在事件处理程序中调用它时,如何将其作为参数传递?
$(document).scroll(function(){
loadData($(this).parent());
});
function loadData(documentSelector){
(function($,document){
//...lots of code here(minified)...
})(documentSelector)
}