假设我有以下代码:
function addScrollEvent(scrollElement, direction) {
$(scrollElement).mouseover(function(){
var maxStreckeY = $("#viewport div").height() - $("#viewport").innerHeight();
var currentPos = $("#viewport").scrollTop();
if (direction == "down") {
var restStrecke = maxStreckeY - currentPos;
var timer = restStrecke / maxStreckeY * namespace.config.autoScrollSpeed;
$(element).stop().animate({scrollTop: maxStreckeY}, timer);
}
if (direction == "right") {
var width = $("#viewport div").width();
$(element).stop().animate({scrollLeft: width - $("#viewport").innerWidth()}, namespace.config.autoScrollSpeed);
}
if (direction == "up") {
var timer = currentPos / maxStreckeY * namespace.config.autoScrollSpeed;
$(element).stop().animate({scrollTop: 0}, timer);
}
if (direction == "left") {
$(element).stop().animate({scrollLeft: 0}, namespace.config.autoScrollSpeed);
}
});
$(scrollElement).mouseleave(function(){
$(element).stop();
checkScrollElements();
});
如何将多个事件附加到scrollElement?我想在tabhold(在鼠标悬停部分)以及tableave(在mouseleave部分)执行确切的代码
我已经尝试过这样的事情:
$(scrollElement).on("mouseover tabhold", function(){
... the function
});
由于控制台给了我以下错误,因此无法正常工作:
"on is not a function"
有人为此获得了解决方案,而没有为另一个事件块复制相同的代码吗? 提前致谢
答案 0 :(得分:1)
您的on
解决方案是正确的;问题是你正在使用过时的jQuery副本。 v1.6已经过了v1.7 四年前的过时。升级到最新版本。
如果由于某种原因你不能,那么旧功能是bind
:
$(scrollElement).bind("mouseover tabhold", function(){
... the function
});
另一种选择是单独编写函数,为其命名,并使用该名称。其中一个优点是,如果需要,它允许您将该功能与其他功能结合使用。