Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.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鼠标事件不起作用_Javascript_Css_Dom_Jquery - Fatal编程技术网

Javascript 滚动列表后,jQuery鼠标事件不起作用

Javascript 滚动列表后,jQuery鼠标事件不起作用,javascript,css,dom,jquery,Javascript,Css,Dom,Jquery,我有一个高度为240px的div,它有一个隐藏的溢出(css attr.)。当用户按下按钮时,div向上滚动到之前隐藏的其他内容。当用户离开这个div时,我希望它滚动回默认内容。但是,jQuery鼠标事件不起作用。。。有人知道为什么吗?这是我的密码: <div id="wrapper"> <ul> <li id="centerhover"> <div class="welcomemsg">

我有一个高度为240px的div,它有一个隐藏的溢出(css attr.)。当用户按下按钮时,div向上滚动到之前隐藏的其他内容。当用户离开这个div时,我希望它滚动回默认内容。但是,jQuery鼠标事件不起作用。。。有人知道为什么吗?这是我的密码:

<div id="wrapper">
    <ul>     
        <li id="centerhover">
            <div class="welcomemsg">
                welcome info
            </div>

        <div class="share">
            <ul>
                <li>share 1</li>
                <li>share 2</li>
            </ul>
        </div> 
        </li>
        <li id="center">
            <div id="pull"></div>
        </li>   
    </ul>
</div>

  • 欢迎信息
    • 分享1
    • 分享2
显示的初始内容位于id为“center”的列表项中。当用户按下id为“pull”的div时,应显示id为“centerhover”的列表项中的内容。下面是它背后的Javascript:

$(document).ready(function() {
        $("#pull").click(function() {
            return gotoPage(0);
        });

        $("centerhover").click(function() {
            return gotoPage(1);
        });

        function gotoPage(page) {
            var visible = Math.ceil($("#wrapper").innerHeight() / 240);
            var currentpage = 1;
            if (page == 1) {
                currentpage = 0;
            }
            var dir = page < 1 ? -1 : 1;
            var n = Math.abs(currentpage - page);
            var top = 240 * dir * visible * n;
            $("#wrapper").filter(':not(:animated)').animate({
                scrollTop : '+=' + top}, 500, function() {
                    if (page == 1) {
                        $("#wrapper").scrollTop(240);
                    } else {
                        $("#wrapper").scrollTop(-240);
                    }
            });
            return false;
        }

        var center = document.getElementById("center");
        var wrapper = document.getElementById("wrapper");
        wrapper.scrollTop = center.scrollHeight;
        setTimeout(function() {
            T.preload(0);
            T.poll(0);
        }, 1000);
    });
$(文档).ready(函数(){
$(“#拉动”)。单击(函数(){
返回gotoPage(0);
});
$(“中心悬停”)。单击(函数(){
返回gotoPage(1);
});
函数gotoPage(第页){
var visible=Math.ceil($(“#包装器”).innerHeight()/240);
var currentpage=1;
如果(第==1页){
currentpage=0;
}
var dir=页面<1?-1:1;
var n=Math.abs(当前页-第页);
var top=240*dir*可见*n;
$(“#包装”)。过滤器(':非(:动画)。动画({
scrollTop:'+='+top},500,函数(){
如果(第==1页){
$(“#包装器”).scrollTop(240);
}否则{
$(“#包装器”).scrollTop(-240);
}
});
返回false;
}
var center=document.getElementById(“中心”);
var wrapper=document.getElementById(“wrapper”);
wrapper.scrollTop=center.scrollHeight;
setTimeout(函数(){
T.预载(0);
T.poll(0);
}, 1000);
});

有人有主意吗?我试过鼠标,点击和其他活动。。。谢谢

第一步只是指出对脚本的一些更改,我看不到有人试图将“mouseleave”事件绑定到现有脚本,我将在下面修改的代码下面列出您想要做的事情(请所有Flamer注意:这是修复一些语法问题的20秒步骤,我将在时间允许的情况下进行重构)


哇!通常我会给出一个答案,但上面脚本中错误问题的数量可能是问题的一部分,如果不是全部的话。首先也是最重要的一点,如果您使用JQuery,为什么要使用document.get*。使用var wrapper=$(“#wrapper”);此外,您的事件关联需要使用$(“#wrapper”).bind(“mouseleave”,function(){……});如果我记得今晚晚些时候,没有人过来接受我在这里说的话并做出回答,我会给你你的解决方案。好的。。我犯了一些愚蠢的错误,而你的解决方案有效!然而,我有一些问题。mouseleave上的绑定和jQuery mouseout()函数之间有什么区别?我不知道为什么我混合了纯jQuery和Javascript,但有那么糟糕吗?:)谢谢首先,如果使用JQuery,请不要将其与getElementBy*代码混合使用。JQuery可以处理您可能遇到的所有跨浏览器问题,而straight javascript则不能。所以是的,有那么糟糕。关于下一个问题,您可以在JQuery.com上阅读关于差异的完整描述,但是mouseleave/mouseout的行为只是略有不同。我想上面的示例将与“mouseout”一起使用,它只是绑定调用修复了这个问题。很高兴它起作用了,因为我没有完成重构,但昨晚我没有抽出时间去做。干杯
$(document).ready(function() {
        $("#pull").click(function() {
            return gotoPage(0);
        });

        $("#centerhover").click(function() {
            return gotoPage(1);
        });

        function gotoPage(page) {
            var visible = Math.ceil($("#wrapper").innerHeight() / 240);
            var currentpage = 1;
            if (page == 1) {
                currentpage = 0;
            }
            var dir = page < 1 ? -1 : 1;
            var n = Math.abs(currentpage - page);
            var top = 240 * dir * visible * n;
            $("#wrapper").filter(':not(:animated)').animate({
                scrollTop : '+=' + parseInt(top)}, 500, function() {
                    if (page == 1) {
                        $("#wrapper").scrollTop(240);
                    } else {
                        $("#wrapper").scrollTop(-240);
                    }
            });
            return false;
        }

        var center = $("#center");
        var wrapper = $("#wrapper");
        wrapper.scrollTop(center.scrollTop());
        setTimeout(function() {
            T.preload(0);
            T.poll(0);
        }, 1000);
    });
$("#wrapper").bind("mouseleave", function(){
    $(this).scrollTop(0);
});