Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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中绑定多个滚动事件吗?_Javascript_Events_Javascript Events - Fatal编程技术网

可以在JavaScript中绑定多个滚动事件吗?

可以在JavaScript中绑定多个滚动事件吗?,javascript,events,javascript-events,Javascript,Events,Javascript Events,当我试着调试它时,似乎只有最后一个事件到达bindEvents() var ArrayProto=Array.prototype; var nativeForEach=ArrayProto.forEach; var-breaker={}; var_has=功能(对象,键){ 返回hasOwnProperty.call(obj,key); }; 函数_each(对象、迭代器、上下文){ if(obj==null)返回; if(nativeForEach&&obj.forEach===nativeF

当我试着调试它时,似乎只有最后一个事件到达bindEvents()

var ArrayProto=Array.prototype;
var nativeForEach=ArrayProto.forEach;
var-breaker={};
var_has=功能(对象,键){
返回hasOwnProperty.call(obj,key);
};
函数_each(对象、迭代器、上下文){
if(obj==null)返回;
if(nativeForEach&&obj.forEach===nativeForEach){
forEach(迭代器,上下文);
}否则如果(对象长度===+对象长度){
对于(变量i=0,l=obj.length;i=2){
var eventType=eventFieldArray[0];
var rawlelementname=eventFieldArray.slice(1.join)(“”);
var elements=(rawElementName='document')?rawElementName:rootElement.querySelectorAll(rawElementName);
如果(元素=='document'){
document.addEventListener(事件类型、函数名称);
}否则{
_每个(元素、功能(元素){
if(元素){
元素。addEventListener(事件类型、函数名称);
}
});
}
}
});
};
var self={
didScrollForSticky:函数(e){
控制台日志(“STRCKY”);
},
didScrollForTabs:函数(e){
控制台日志(“选项卡”);
},
无限:函数(e){
console.log(“无限”);
}
};
var eventsDesktop={
“滚动文档”:self.didcrollforsticky,
“滚动文档”:self.didcrollfortabs,
“滚动文档”:self.didcrollforInfinite
};
bindEvents(文档、eventsDesktop);
此声明:

var eventsDesktop = {
    "scroll document": self.didScrollForSticky,
    "scroll document": self.didScrollForTabs,
    "scroll document": self.didScrollForInfinite
};
是对象文字的声明,其行为基本上类似于哈希表,即具有唯一键的键/值对集。当您输入三个
“滚动文档”
键,并且只允许一个键时,其中一个(最后一个)会覆盖其他键

您可以使用以下数据结构之一,并相应地更新代码:

/* Change keys */
var eventsDesktop = {
    "scroll document #1": self.didScrollForSticky,
    "scroll document #2": self.didScrollForTabs,
    "scroll document #3": self.didScrollForInfinite
};

/* Use hash-of-lists */
var eventsDesktop = {
    "scroll document": [
        self.didScrollForSticky,
        self.didScrollForTabs,
        self.didScrollForInfinite
    ]
};

/* List-of-lists */
var eventsDesktop = [
    ["scroll document", self.didScrollForSticky],
    ["scroll document", self.didScrollForTabs],
    ["scroll document", self.didScrollForInfinite]
];    

/* List-of-hashes */
var eventsDesktop = [
    { name: "scroll document", callback: self.didScrollForSticky},
    { name: "scroll document", callback: self.didScrollForTabs},
    { name: "scroll document", callback: self.didScrollForInfinite}
];
/* Change keys */
var eventsDesktop = {
    "scroll document #1": self.didScrollForSticky,
    "scroll document #2": self.didScrollForTabs,
    "scroll document #3": self.didScrollForInfinite
};

/* Use hash-of-lists */
var eventsDesktop = {
    "scroll document": [
        self.didScrollForSticky,
        self.didScrollForTabs,
        self.didScrollForInfinite
    ]
};

/* List-of-lists */
var eventsDesktop = [
    ["scroll document", self.didScrollForSticky],
    ["scroll document", self.didScrollForTabs],
    ["scroll document", self.didScrollForInfinite]
];    

/* List-of-hashes */
var eventsDesktop = [
    { name: "scroll document", callback: self.didScrollForSticky},
    { name: "scroll document", callback: self.didScrollForTabs},
    { name: "scroll document", callback: self.didScrollForInfinite}
];