Причина, по которой это не работает в первом примере, заключается в том, что вы не препятствует поведению ссылки по умолчанию.При создании ссылки с хеш-тегом (например, #two
) ссылка будет перемещать страницу к элементу с таким же параметром ID
(например, <div id="two">
)
Поскольку в первом примере выу вас есть ссылка, указывающая на #two
, и у вас есть элемент с таким же идентификатором, <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;
});
});
Надеюсь, мое объяснение имеет смысл:)