我有三种形式的简单代码,一种不起作用,另两种起作用,但我想了解是什么导致两种方法起作用。
请看一下简单的代码。http://jsfiddle.net/NjWAz/(它不能正常滑动)。
而如果只附加div id,则它可以正常滑动。http://jsfiddle.net/NjWAz/2/(这是我的第一个问题,是什么导致它真正工作?仅仅改变id是如何使它工作的?)
还有另一种形式。http://jsfiddle.net/NjWAz/1/(它也能工作,所以我的第二个问题是,通过防止默认行为,它是如何工作的……以及什么是默认行为,破坏了它的工作http://jsfiddle.net/NjWAz/)
第一个例子之所以不起作用,是因为您没有阻止链接的默认行为。当您创建一个带有哈希标签(例如#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;
});
});
希望我的解释有意义:)