2008-12-06 63 views
2

我有一個代碼,哪些項目使用輪詢更新。我寫了一個簡單的jQuery插件被調用,像這樣的代碼:果然一UL成股票,通過李滾動創建後與jQuery插件對象進行交互

$("#cont ul").ticker(); 

。要添加新項目,我必須將lis添加到ul,這很好。然而,在我的OO希望我可以在股票對象上有一個addItem函數。但是,我不想失去jQuery使用的鏈接性。

是否有一些方法比向列表中添加ul更明顯,但這與jQuery的做事方式相符?

回答

1

jQuery並不是一個真正的面向對象的解決方案,所以你說的並不是真正的「jQuery方式」。我聽說Prototype是關於OO的,所以你可能想在某一天看看。

沒有理由你不能另一個函數添加到jQuery對象,但:

$.fn.addTickerItem = function(contents) { 
    this.append(
     $("<li></li>").html(contents); 
    ); 
    return this; 
}; 

..但你會慢慢地污染命名空間。

5

你應該做的是爲你的插件擴展設置:

jQuery.ticker = function(settings) 
{ 
var settings = 
jQuery.extend(
{ 
action : 'create', 
item : $(this) 
} 
,settings); 

return $(this).each(function(){ 
if(settings.action =='create') 
{ 
    //initialize ticker.. 
} 
else if(settings.action == 'add') 
{ 
    //add to ticker. 
} 
}//end each. 
}//end plugin. 

$('#ticker').ticker(); //this will initialize it, no problem. 

var settings1 = { action : 'add', item : $(expr1) } 
$('#ticker').ticker(settings1);//this will execute the "add" action.