Jquery - щелчок документа отключает обратную передачу - PullRequest
1 голос
/ 13 октября 2010

У меня есть div для отображения, когда я нажимаю кнопку, и скрытие, когда я нажимаю в любом месте.

jQuery(document).ready(function () {
    $(document).click(function (e) {
        if (e.button == 0) {
            $('#DivToHide').hide();
        }
    });

    //If its own, return
    $('#DivToHide').click(function () {
        return false;
    });
    //If it is the button to triger Display, return
    $('#DisplayDivButton').click(function () {
        return false;
    });
});

Это хорошо работает, за исключением того, что DivToHide содержит кнопку ссылки, которая выполняет обратный вызов. Но когда я включаю код выше, он не делает обратного вызова. Не то чтобы все в панели обновления. Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 октября 2010

Не предназначайтесь для контейнера div #DivToHide ..

предназначайтесь для фактической ссылки в этом

//If its own, return
//this will make all links inside DivToHide to cancel default action..
$('#DivToHide a').click(function () {
    return false;
});

, хотя, если у вас есть больше ссылок в этом, вам лучше добавить class или id к ссылке и ее прямому назначению ..

Обновление после комментария

Вы должны использовать event.stopPropagation(); на ссылке, чтобы остановить всплытие события на другие элементы.

$('#DivToHide a').click(function (event) {
        event.stopPropagation();
    });
0 голосов
/ 13 октября 2010

Если вы вернете false, это предотвратит выполнение действия по умолчанию для события.

Когда вы нажимаете на ссылку внутри DIV, он сначала регистрирует обработчик кликов в DIV и возвращает false, останавливая основную ссылку, которая фактически получает событие click.

Я думаю, что этопричина, по которой ваша ссылка не будет работать, но я не уверен, почему у вас есть обработчик #DivToHide в любом случае, не могли бы вы просто удалить это и позволить обработчику щелчков на документе обрабатывать скрывающий DIV, и обработчик щелчковна ручке DisplayDivButton, показывающей DIV?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...