2009-11-28 115 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