我有一个自动收报机,使用轮询更新哪些项目。我为自动收录器编写了一个简单的jQuery插件,它被调用如下:
$("#cont ul").ticker();
将ul转换为自动收报机,滚动浏览li。要添加新项目,我必须将lis添加到ul,这可以正常工作。但是,我的OO希望我可以在ticker对象上有一个addItem函数。但是,我不想失去jQuery使用的可链接性。
是否有一些方法比将ul添加到列表中更明显但是这与jQuery的处理方式相符?
答案 0 :(得分: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.
答案 1 :(得分:1)
jQuery实际上不是一个OO解决方案,所以你说它不是真正的“jQuery方式”是正确的。我听说Prototype都是关于OO的,所以你可能想看看那一天。
没有理由你不能在jQuery对象中添加另一个函数:
$.fn.addTickerItem = function(contents) {
this.append(
$("<li></li>").html(contents);
);
return this;
};
..但你要慢慢污染命名空间。