jquery live метод, как отключить одну ссылку, а не каждую ссылку - PullRequest
2 голосов
/ 25 октября 2009

как я могу отключить метод live ('click', function ...) и затем после вызова ajax (в зависимости от ответа) затем включить его снова?

Я читал в каком-то месте, что "event.preventDefault ();" не работает с живым методом, и даже если он работает, как я могу включить его снова? я не могу использовать метод die ('click', function ...), потому что он отключит все ссылки, а не только одну ссылку, на которую я нажал.

1 Ответ

3 голосов
/ 25 октября 2009

Допустим, у вас есть этот код

$('a.clickers').live('click', function() {
    ///...
});

что вы хотели бы сделать, это выделить элементы при нажатии. Функции обработчика в jquery всегда имеют свой контекст, установленный на элемент, который они обрабатывают в данный момент (то есть этот == элемент привязки, на который вы щелкнули). Поэтому нам нужно использовать это, и вызывать die на этом индивидуально, вот так.

$('a.clickers').live('click', function clickHandler() {
    // keep a reference to the link that is clicked on so we can refer to it
    // later in the ajax handler.
    var elementClickedOn = this;
    // removes the live event handler
    // from just this link
    $(elementClickedOn).die('click', clickHandler);
    // your code
    // ajax call, im not 100% familiar with ajax in jquery
    // but you get the gist.
    $.ajax(server, function ajaxHandler(responseargs) {
        if (responseargs.reEnableConditionMet) {
            //renable the element's live event handler, by referring to the 
            //original function
            $(elementClickedOn).live('click', clickHandler);
        }
    });
});

Надеюсь, это близко к тому, что вы искали.

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