【问题标题】:jQuery hashchange issuejQuery hashchange 问题
【发布时间】:2012-02-24 16:54:14
【问题描述】:

我有一个简单的代码,三种形式的一种不工作,另两种形式工作但我想了解是什么导致两种方法工作

请看一下简单的代码。 http://jsfiddle.net/NjWAz/(不能正常滑动)。

如果只附加 div id,那么它会正确滑动。 http://jsfiddle.net/NjWAz/2/ (这是我的第一个问题,是什么导致它实际工作?改变 id 是如何让它工作的?)

还有另一种形式。 http://jsfiddle.net/NjWAz/1/ (它也有效,所以这是我的第二个问题,即通过阻止默认行为如何使其工作......以及破坏其在http://jsfiddle.net/NjWAz/ 工作的默认行为是什么)

【问题讨论】:

    标签: jquery hashchange


    【解决方案1】:

    它不适用于第一个示例的原因是您没有阻止链接的默认行为。当您创建带有井号标签(例如#two)的链接时,该链接会将页面移动到具有相同ID 参数的元素(例如<div id="two">

    因为在第一个示例中,您有一个指向#two 的链接,并且您有一个具有相同id 的元素<div id="two">,它会跳转到该元素,然后继续执行您的jQuery 动画,导致它出现好像它正在移动到#three

    第二个例子,href 属性值不匹配任何 HTML 元素,所以它工作正常。

    在第三个示例中,您阻止了链接的默认行为,因此它可以工作。

    您可以使用第三个示例中的方法来阻止默认行为,或者您可以将 return false;在您的点击事件结束时:

    $( function () {
        $(".clickIt a").click( function () {
            var linked = $(this).attr("href");
            var pos = $(linked).position();
    
            $(".clickSlider").stop().animate({left: -pos.left,}, 500 );
    
            return false;
        });
    });​​​​​
    

    希望我的解释是有道理的:)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2011-03-06
    • 2013-11-01
    相关资源
    最近更新 更多