2011-11-27 6 views
-1

J'ai un formulaire et un bouton qui n'est pas un submit dans le formulaire. J'utilise jQuery pour valider le formulaire avant de le soumettre.Différence entre live() et bind() dans jQuery

Je dois d'abord:

$('#btadd').live('click', function() { 
    $('#formadd').submit(); 
    //return; //it doesn't matter 
}); 
$('#formadd').submit(function() { 
    if (...) { 
    alert('incompleted!'); 
    return false; 
    } else if (...) { 
    alert('invalid!'); 
    return false; 
    } else 
    return true; 
}); 

Le problème est de savoir si la forme n'est pas terminée, lorsque je clique sur le bouton, la fenêtre se produira deux fois («inachevées!).

Puis-je essayer de remplacer live avec bind, alors ça fonctionne très bien.

J'ai cherché la différence entre live() et bind(), mais je ne sais toujours pas comment ils fonctionnent dans cet exemple. Mon code fonctionne comme ce que je veux maintenant, mais je veux comprendre ce qui se passe ici. Quelqu'un peut m'expliquer cela?

+0

Pouvez-vous s'il vous plaît remplir les conditions dans le 'if/else-if'? – PhD

+2

Avez-vous lu leurs pages de documents respectives? – BNL

+1

Pourquoi avez-vous besoin des deux fonctions? Pourquoi ne pas mettre la fonction submit dans la fonction bind? – bozdoz

Répondre

0

live fonctionne pour tout élément ajouté au DOM avec ce sélecteur contrairement à bind qui ne fonctionne qu'avec les éléments déjà présents dans le DOM. Disons que vous avez un élément <div id="test">Test</div>. Si cet élément existe au moment où la méthode bind est appelée, la liaison fonctionnera comme prévu. Si à la place l'élément n'existe pas, cela ne fonctionnera pas.

Ceci est en contraste avec live qui fonctionne avec n'importe quel élément avec le sélecteur, peu importe quand il est ajouté au DOM.

+0

Je le sais. Mais pourquoi ils se comportent différemment dans mon cas? – DrXCheng

+0

Où est le HTML –

Questions connexes