English 中文(简体)
创建jQuery插件对象后与之交互
原标题:
  • 时间:2008-12-06 01:14:00
  •  标签:

我有一个使用轮询更新项目的跑马灯。我编写了一个简单的jQuery插件,可以像这样调用:

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

这将一个ul转换为一个ticker,通过li滚动。要添加新项目,我必须向ul添加lis,这很好用。然而,我希望我可以在ticker对象上有一个addItem函数,但是我不想失去jQuery使用的链式连接性。

有没有一种比将“ul”添加到列表中更明显,但与jQuery处理事物的方式相匹配的方法?

最佳回答

jQuery并不是真正的面向对象解决方案,所以你说它不是真正的“jQuery方式”是正确的。我听说Prototype全都是关于面向对象的,所以你可能想有一天去研究一下它。

虽然没有任何理由不能向jQuery对象添加另一个函数:

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

...但你会慢慢污染命名空间。

问题回答

你应该做的是扩展插件的设置:

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.




相关问题
热门标签