2011-08-19 10 views
2

J'essaie de comprendre comment utiliser bind dans jquery.comment utiliser bind() au lieu de live()?

J'ai une page qui, après une pression de touche, fait le code suivant:

var html = []; 
html.push('<select name="weddingturn" id="weddingturn">'); 
var a = firstweddingturn; 
var b = Number(firstweddingturn) + 16; 
while (a < b) { 
    // do some code 
    html.push('<option name="asdf">' + a + '</option>'); 
    a++; 
} // end while 
html.push('</select>'); 
$('#div1').append(html.join('')); 

Je veux aussi prendre toute modification à cette sélection, une fois qu'il est mis en place. J'apprécierais beaucoup quelqu'un montrant et expliquant comment utiliser bind() à la place de live().

Pour des raisons de contexte, s'il vous plaît voir ici: jquery created select, and triggering on change

+1

Voici un bon article que j'ai trouvé sur bind, live, et delegate http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/ – bittersweetryan

+0

'live' est 'bind' avec l'avantage supplémentaire de se lier aux éléments * future * qui correspondent au * selector * auquel Live était lié. Aussi, rappelez-vous qu'un identifiant ** doit ** être unique à la page; '$ (" # id ")' ne retournera qu'un élément correspondant (comme le fera 'document.getElementById (" id ")'). –

Répondre

2

Tout échange:

$('#weddingturn').live('change',function() { 

à:

$('#weddingturn').bind('change',function() { 

.live devrait avoir résolu votre problème - alors quelle est la raison exacte ou le problème que vous rencontrez?

2

Il y a aussi un raccourci pour bind() pour certains événements. Vous pouvez rendre votre code plus court en faisant:

$('#weddingturn').change(function() { 

Gardez à l'esprit que bind() et live() font des choses fondamentalement différentes. live() affecte tout avec les sélecteurs donnés, tandis que bind() liera uniquement les événements aux éléments qui sont déjà sur la page.

1

Je pense que cela dépend de quand vous appelez live ou bind - après ou avant que l'élément html soit disponible. Si vous appelez bind après que cet élément html est disponible sur cette page, il devrait être OK pour échanger. Sinon, je pense que bind ne fonctionnerait pas.

Questions connexes