Как остановить распространение события в jquery? - PullRequest
6 голосов
/ 18 мая 2011
$("div#foobar").live('click', function() {  

});

$(window).hashchange(function() {   

});

Как остановить событие hashchange при возникновении события click.

Примечание По событию клика я запускаю ajax и меняю хеш ... А на hashchange я что-то делаю. Так как событие Click также меняет хеш, поэтому hashevent срабатывает. Итак, я хочу, чтобы всякий раз, когда происходит событие клика, hashchange не должен запускаться ..

Ответы [ 3 ]

10 голосов
/ 18 мая 2011

остановить распространение и предотвратить поведение по умолчанию.

$("div#foobar").live('click', function(event) {  
    event.stopPropagation();
    event.preventDefault()
});
1 голос
/ 18 мая 2011

По сути, вы не можете делать то, что хотите. Если вы меняете хеш, конечно, событие hashchange будет запущено. Вот для чего это. Предотвращение распространения события click не помешает обработке события hashchange.

Создайте свою систему так, чтобы это не было проблемой.

0 голосов
/ 18 мая 2011
(function() {

    var fire_hashchange = true;

    $("div#foobar").live('click', function() {  
        fire_hashchange = false;
        // do stuff
    });

    $(window).hashchange(function() {   
        if (!fire_hashchange) {
            fire_hashchange = true;
            return;
        }
        // do stuff
    });
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...