簡體   English   中英

創建后與jQuery插件對象進行交互

[英]Interacting with jQuery plugin objects after their creation

我有一個行情自動收錄機,哪些項目使用輪詢進行更新。 我已經為股票行情編寫了一個簡單的jQuery插件,如下所示:

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

將ul變成股票行情自動收錄器,滾動通過li。 要添加新項目,我必須在ul中添加lis,效果很好。 但是,我內部的OO希望我可以在代碼對象中具有addItem函數。 但是,我不想失去jQuery使用的可鏈接性。

是否有某種方法比將ul添加到列表中更明顯,但是與jQuery的工作方式相匹配?

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

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.

jQuery並不是真正的OO解決方案,因此您可以肯定地說這不是“ jQuery方式”。 我聽說Prototype就是關於OO的,所以您可能需要研究一下這一天。

但是沒有理由您不能向jQuery對象添加另一個函數:

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

..但是您會慢慢污染名稱空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM