JQuery Hashchange проблема - PullRequest
       17

JQuery Hashchange проблема

1 голос
/ 24 февраля 2012

У меня есть простой код в трех формах, одна не работает, а две другие работают, НО я хочу понять, что , что заставляет работать два метода .

Пожалуйста, посмотрите на простой код.http://jsfiddle.net/NjWAz/ (он не скользит должным образом).

Хотя, если добавляются только идентификаторы деления, он скользит правильно.http://jsfiddle.net/NjWAz/2/ (вот мой первый вопрос: что заставляет его работать на самом деле? Как меняются идентификаторы?)

И в другой форме.http://jsfiddle.net/NjWAz/1/ (Это тоже работает, поэтому вот мой второй вопрос, который предотвращает поведение по умолчанию, как оно работает ... и что такое поведение по умолчанию, которое нарушает его работу при http://jsfiddle.net/NjWAz/)

1 Ответ

1 голос
/ 24 февраля 2012

Причина, по которой это не работает в первом примере, заключается в том, что вы не препятствует поведению ссылки по умолчанию.При создании ссылки с хеш-тегом (например, #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;
    });
});​​​​​

Надеюсь, мое объяснение имеет смысл:)

...