2010-04-27 13 views

Répondre

2

.live() doit être utilisé sur un sélecteur. Le fait qu'un élément cible d'événement corresponde à la chaîne de sélection est vérifié lors de l'événement. Cela est indiqué dans les 'avertissements' de doc:

Les méthodes de traversée de DOM ne sont pas entièrement supportées pour trouver des éléments à envoyer à .live(). Au contraire, la méthode .live() doit toujours être appelée directement après un sélecteur, comme dans l'exemple ci-dessus.

$(document) n'est pas un sélecteur. Si vous regardez $(document).selector, qui est la chaîne de sélecteur rappeler que live() utilise pour la correspondance, vous obtenez une chaîne vide, d'où live() ne fonctionne pas.

Puisque les sélecteurs correspondent uniquement aux éléments, vous ne pouvez pas live -binder contre document. Ensuite, puisque document ne change jamais, il n'y a pas besoin de: une liaison normale serait bien.

(Ceci est la conception de l'API malheureux. Il aurait dû $.live('selector', 'event', function() {}); l'OMI. $('selector').live() permet pas de savoir ce qu'il en train de faire. Et certainement il y aurait eu une erreur lorsque vous appelez live() sur un emballage sans sélecteur.)

+0

C'est pourquoi .delegate() a été présenté, fonctionne mieux et rend les choses beaucoup plus claires – jAndy

+0

merci pour la réponse claire – Jason

0

Je ne pense pas que vous pouvez déléguer des événements au « Document ».
Pas exactement, mais je pense que .live() ne sera pas bouillonner jusqu'à présent.

Essayez de .bind() et .trigger() à d'autres éléments sous document.body