2010-04-06 15 views
1

J'utilise le plugin extensible de Brandon Aaron pour développer automatiquement mes zones de texte sous la forme et cela fonctionne bien. Le problème est que je charge beaucoup de pages via ajax, donc j'ai besoin de relier la méthode plugin aux zones de texte chargées par ajax.Comment lier automatiquement les initialisations de plugin pour le contenu chargé par l'intermédiaire d'ajax

est-il possible de faire ce genre de méthode appelle comme

$("textarea").expandable(); 

par en direct() ou délégué() en jQuery. ça va rendre mon code beaucoup plus propre.

Répondre

2

Le .liveQuery plugin a encore utilisé ici, ce n'est pas entièrement remplacé par .live() de base jQuery, voici comment votre exemple fonctionnerait:

$("textarea").liveQuery(function() { 
    $(this).expandable(); 
}); 

.livequery() montres en fait de nouveaux éléments, contrairement à .live() qui écoute les événements Pour gonfler les DOM, ils opèrent de manière très différente.

+0

Merci l'homme, cela a fait ma journée. J'ai complètement oublié le plugin liveQuery après la version 1.4, car ils ont ajouté live submit et flou ce qui n'était pas possible avec liveQuery. Merci de me l'avoir rappelé. –

0

Seuls les événements peuvent être liés, les plugins doivent être appelés avec chaque nouvel élément.

[Modifier]

événements ne sont pas binded à de nouveaux éléments, les événements sont tout simplement pris la phase bouillonnante/capture sur le chemin de l'élément, ce qui permet de nouveaux éléments à ajouter et les événements peuvent encore être manipulé.

Les plugins sont liés à l'ensemble d'éléments renvoyé par le constructeur init. Il appartient aux développeurs de plugin d'utiliser la délégation d'événements dans leur plugin pour capturer de nouveaux éléments ajoutés dans la portée de l'élément auquel ils étaient attachés (ou ils peuvent sortir du document et risquer de se heurter à d'autres plugins).

+0

Si c'est le cas, cela semble être une excellente idée pour un plugin. quelque chose comme live-plugin-binding. beaucoup de plugins ajouteront une méthode à jQuery qui devrait être appelée pour s'initialiser. Ce serait génial si un plugin peut gérer cela à la volée, tout comme en direct. –

0

La façon dont je vais personnellement à ce sujet est d'initialiser le plugin dans une fonction et d'appeler cette fonction lorsque la charge ajax est terminée.Ma batterie d'ordinateur portable est faible, donc ma syntaxe est probablement un peu mais l'idée est là.

function foo() 
{ 
    $('.classSelector').plugin(); 
} 

$('.eventListener').load('url', function() 
{ 
    foo(); 
})