2010-10-29 32 views
0

J'ai un lien href est comme ci-dessousjQuery comment remplacer className d'un href et cliquez Sametime pour exécuter la fonction

<a href="#" class="add_encounter">Add</a> 

sur $(document).ready je lance cette fonction est comme ci-dessous

$('.add_encounter').click(function(event) { 
    add_encounter(encounters); 
    event.preventDefault(); 
}); 

sur la fonction add_encounter j'ai changé le nom de classe de ahref de add_encounter pour rencontrer encounterSubmitter et veut cliquer sur le même pour exécuter une autre fonction mais quand je clique sur le lien il exécute la fonction et change le nom de classe pour rencontrerSubmitter et revenir à même classe-à-dire add_enounter

function add_encounter(encounters) { 
    if ($('.add_encounter').text() == "Add"){   
     $('.add_encounter').removeClass().addClass("encounterSubmitter") 
    } 
    $('.encounterSubmitter').click(function(event) {save(); event.preventDefault();}); 
} 

fonction de sauvegarde est comme ci-dessous

function save() { 
    var encounter = $('#name').val(); 
    var key = $('#encounterKey').val(); 
    if (key == '') { 
     key = null 
    } 
    if (encounter == ''){ 
cancel_encounter() 
    } 
} 

cancel_encounter est comme ci-dessous

function cancel_encounter() {  
     $('.encounterSubmitter').removeClass().addClass("add_encounter") 
     $('.add_encounter').text("Add")   
} 

Il va à fonction de sauvegarde vérifie la condition if et va cancel_encounter fonction et remplace le nom de la classe par add_encounter

Je sais que cette question est peu confuse, j'espère cependant comprendre ou jamais rencontré ce genre de problème peut me donner la solution.

Répondre

0

HTML

<a href="#" class="add my_encounter">Add</a> 

JS

$('.my_encounter').bind('click', function(event) { 

    if ((this).hasClass('add')){ //add_encounter 
     //encounters ??? 
     $(this).removeClass('add').addClass("submitter") 

    } 
    else if ((this).hasClass('submitter')){ // save 
     var encounter = $('#name').val(), 
      key = $('#encounterKey').val(); 

     if (key == '') { 
     key = null 
     } 
     if (encounter == ''){ 
     // cancel_encounter 
     $(this) 
      .removeClass("submitter") 
      .addClass("add") 
      .text("Add"); //?? where remove text "Add" 
     } 

    } 

    event.preventDefault(); 
}); 
+0

J'ai utilisé votre technique mais ici le problème est que je suis en utilisant la fonction d'économie pour sauver les valeurs si la rencontre n'est pas vide comme celui-ci-dessous –

+0

$ ('.my_encounter'). bind ('clic', fonction (événement) { if ($ (this) .hasClass ('ajouter')) {$ ("# encountersList"). slideUp ("lent"). hide ($ (". encounterForm"). show ("slow"); $ ('. encounterbutton'). text ("Annuler") $ (this) .text ("Enregistrer") $ ('# moitié supérieure -header '). text ("Annonce d Encounter ") $ (this) .removeClass ('ajouter'). addClass (" submitter ")} sinon if ($ (this) .hasClass ('émetteur')) {var encounter = $ ('# name') .val(), key = $ ('# encounterKey'). val(); if (clé == '') {clé = null} if (rencontre == '') {$ (this.removeClass ("émetteur") .addClass ("ajouter"). text ("+"); } else {rencontres.save (clé, rencontre);} } événement.preventDefault(); }); –

+0

Donc, dans ce cas, il enregistre la rencontre deux fois si le $ (. My_counter) a cliqué une deuxième fois. –

0

Pas en mesure de tester ce droit, mais peut-être cela fonctionne:

$('.add_encounter').click(function(event) { 
     add_encounter(encounters); 
     event.preventDefault(); 
    }); 

    function add_encounter(encounters) { 
     if ($('.add_encounter').text() == "Add"){   
      $('.add_encounter').removeClass().addClass("encounterSubmitter") 
     } 
    } 

    $('.encounterSubmitter').live('click',function(event){ 
     save(); 
     event.preventDefault(); 
    }); 

    function save() { 
     var encounter = $('#name').val(); 
     var key = $('#encounterKey').val(); 
     if (key == '') { 
      key = null 
     } 
     if (encounter == ''){ 
      cancel_encounter() 
     } 
    } 

    function cancel_encounter() {  
     $('.encounterSubmitter').removeClass().addClass("add_encounter") 
     $('.add_encounter').text("Add")   
    } 

Le problème était la fonction de sauvegarde étant appelée par votre fonction add_encounter. Par conséquent, il vérifie votre clé et appelle la fonction cancel_encounter pour réinitialiser le lien.

L'appel en direct fonctionnera même si vos éléments à lier sont chargés après le chargement du javascript.