Как имитировать StopPropagation с помощью jQuery.live - PullRequest
1 голос
/ 11 декабря 2010

Итак, я знаю, что одним из недостатков использования jQuery.live является недоступность .stopPropagation(). Но мне это очень нужно.

Вот мой вариант использования. У меня есть флажок, который в настоящее время связан с кликом. Однако другие флажки появляются на экране через вызов AJAX, а это значит, что мне действительно нужно .live('click', fn). К сожалению, флажок расположен поверх другого кликабельного элемента, требующего .stopPropagation(). Это прекрасно работает с .bind('click', fn), но невозможность использовать его с .live() мешает мне. Использование return false не работает, так как флажок не будет установлен.

Любые идеи о том, как имитировать .stopPropagation() при использовании .live() без возврата false?

1 Ответ

1 голос
/ 11 декабря 2010

Вместо привязки обработчика .live к флажкам привязывайте более умный обработчик события к контейнеру, причем поведение зависит от , элемент которого является целью события.

$("#container").click(function(e) {
    var ele = e.target;
    if(ele.tagName.toLowerCase() == 'input' 
        && ele.type.toLowerCase() == 'checkbox') {
        e.stopPropagation();
        // do something special for contained checkboxes
        // e.g.:
        var val = $(ele).val();
    }
});

Здесь является примером того, как это можно использовать.

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