开发者

jQuery: inherit functions to several objects

i made several table-based-widgets (listview-kind-of) which all have the sam开发者_Python百科e characteristics: styling odd/even rows, hover on/off, set color onClick, deleting a row when clicking on trash-icon.

so it's always the same (prototype-)code for each widget. is there a way to have the code only once then simply apply/inherit it to all widgets?

2nd, here's some of the code - could this be optimized?

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


You have 2 options:

First just create a plugin that handles that basic stuff and then create other plugins that do the specialized stuff for that listing.

Second use jQuery.extend to extend one plugin and create a new one.

To optimize this use event delegation ( 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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜