创建后与jQuery插件对象交互

时间:2008-12-06 01:14:01

标签: javascript jquery

我有一个自动收报机,使用轮询更新哪些项目。我为自动收录器编写了一个简单的jQuery插件,它被调用如下:

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

将ul转换为自动收报机,滚动浏览li。要添加新项目,我必须将lis添加到ul,这可以正常工作。但是,我的OO希望我可以在ticker对象上有一个addItem函数。但是,我不想失去jQuery使用的可链接性。

是否有一些方法比将ul添加到列表中更明显但是这与jQuery的处理方式相符?

2 个答案:

答案 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;
};

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