2009-10-25 3 views
2

comment puis-je désactiver live ('clic', fonction ...) méthode, puis après appel ajax (en fonction de la réponse), puis l'activer à nouveau?méthode live jquery, comment désactiver un lien et pas tous les liens

J'ai lu quelque part que "event.preventDefault();" ne fonctionne pas sur la méthode en direct et même si cela fonctionne, comment puis-je l'activer à nouveau? Je ne peux pas utiliser la méthode die ('clic', fonction ...), car elle va désactiver tous les liens et pas seulement un seul lien, sur lequel j'ai cliqué.

Répondre

3

permet de dire que vous avez ce code

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

ce que vous voulez faire est des éléments individuels quand ils sont cliqués. Les fonctions de gestionnaire de jquery ont toujours leur contexte défini sur l'élément qu'elles sont en train de traiter (c'est-à-dire sur cet élément d'ancrage == sur lequel vous avez cliqué). Nous devons donc utiliser cela, et appeler mourir dessus individuellement comme ça.

$('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); 
     } 
    }); 
}); 

J'espère que c'est proche de ce que vous cherchiez.

+0

Je me demande si cela est conseillé: "Pour que .die() fonctionne correctement, le sélecteur utilisé doit correspondre exactement au sélecteur initialement utilisé avec .live()." [docs] (http://api.jquery.com/die/) – Casebash

+0

ce message a 2 ans. ça a probablement marché à l'époque. – barkmadley

Questions connexes