2009-11-28 114 views
0

我做了几个基于表格的小部件(listview-kind of),它们都具有相同的特征: 设计奇/偶行,悬停开/关,设置颜色onClick,删除单击垃圾桶图标时的行。jQuery:继承几个对象的功能

所以它总是每个部件都是相同的(原型)代码。 有没有办法让代码只有一次然后简单地应用/继承它的所有小部件?

第二,这里的一些代码 - 可以优化吗?

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"); 

回答

0

你有2种选择:

首先刚刚创建处理是基本的东西,然后创建其他的插件,为上市做专业的东西,一个插件。

第二次使用jQuery.extend扩展一个插件并创建一个新插件。

优化这个使用事件代表团(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