Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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中文档对象上的TypeNull错误_Javascript_Jquery_Dom Events - Fatal编程技术网

Javascript 如何修复事件方法jQuery中文档对象上的TypeNull错误

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

我有一个代码块,我想放在事件处理程序中,但我得到了错误“TypeError:无法读取null的属性'dispatchEvent'。我知道dispatchEvent是在null对象引用上调用的,我猜它就是DOM对象

这是密码(我刚知道这是一种生活):

然后在我的滚动事件中:

$(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)
}