jQuery:将函数继承到多个对象

时间:2009-11-28 16:04:02

标签: jquery function apply

我制作了几个基于表格的小部件(listview-kind-of),它们都具有相同的特征: 样式奇数/偶数行,悬停开/关,设置颜色onClick,单击trash-icon时删除行。

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

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

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

1 个答案:

答案 0 :(得分:0)

您有两个选择:

首先创建一个处理基本内容的插件,然后创建其他插件,为该列表执行专门的操作。

其次使用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