2009-11-28 7 views
0

J'ai créé plusieurs widgets basés sur des tables (listview-kind-of) qui ont tous les mêmes caractéristiques: style impair/pair rows, hover on/off, définir la couleur onClick, supprimer un ramer en cliquant sur l'icône de la corbeille. Donc, c'est toujours le même code (prototype) pour chaque widget. Y at-il un moyen d'avoir le code une seule fois puis simplement appliquer/hériter de tous les widgets? Deuxièmement, voici une partie du code - cela pourrait-il être optimisé?jQuery: hérite des fonctions de plusieurs objets

var me = this; 
$("tr",this.table).each(function(i) 
{ 
    var tr = $(this); 
    tr.bind("mouseover",function(){me.hover(tr,true)}); 
    tr.bind("mouseout",function(){me.hover(tr,false)}); 
    tr.bind("click",function(){me.Click(tr)}); 
}); 
$("tr").filter(":odd").addClass("odd"); 

Répondre

0

Vous avez 2 options:

Tout d'abord il suffit de créer un plugin qui gère ce genre de choses de base, puis créer d'autres plugins qui font les choses spécialisées pour cette liste.

Deuxième utilisation de jQuery.extend pour étendre un plugin et en créer un nouveau.

Pour optimiser cette délégation d'événement utilisation (jquery().live())

var me = this; 
var id = this.table.attr('id'); 

$('#'.id) 
.live("mouseover",function(){me.hover($(this),true)}) 
.live("mouseout",function(){me.hover($(this),false)}) 
.live("click",function(){me.Click($(this)}); 

$("tr").filter(":odd").addClass("odd"); 

http://docs.jquery.com/Events/live

Questions connexes