0

我有一个小问题,文本是可见的,它在 mouseenter 上完美滚动,在 mouseleave 上隐藏,但是当我再次将鼠标悬停时,该功能不起作用。这是代码:

$(document).ready(function (){
    var $container = $("#scrollContainer1"),
        $ps = $container.find("p"),
        containerHeight = $container.height(),
        contentHeight = 0,
        scrollTop = 0;

    ($container).hover(function(){
        $ps.each(function() {
            contentHeight += $(this).outerHeight();
        })

        $("<div></div>").css("height", 150).appendTo($container).clone().prependTo($container);

        setInterval(function() {
            if (scrollTop > contentHeight + containerHeight)
                scrollTop = 0;
            $container.scrollTop(scrollTop++);
        }, 20);

    });
    ($container).on("mouseleave", function(){
        scrollTop=0;
        contentHeight=0; 
    });
});
4

2 回答 2

0

@user2431639:你能不能把你的 HTML 代码也放上去!大多数情况下,您必须将 mouseenter 更改为“onmouseover”。

在 HTML 中:

<element onmouseover="SomeJavaScriptCode">

在 JavaScript 中:

object.onmouseover=function(){SomeJavaScriptCode};
于 2013-06-08T19:59:33.820 回答
0

我能想到的就是您将新的 div 插入到容器中。悬停仅在最顶层执行,并且看起来事件不会向下传播。

我的建议是使用.on()函数来绑定鼠标事件,而不仅仅是悬停。

$container.on("mouseenter", function(event){
  // mouse in
});
$container.on("mouseleave", function(event){
  // mouse out
});

资源

现在唯一的问题是,这些事件将在容器中的子元素上触发。所以不能用this$container 来引用。

于 2013-06-08T20:01:20.453 回答