Javascript 创建jQuery插件对象后与它们交互
我有一个使用轮询更新项目的计时器。我为ticker编写了一个简单的jQuery插件,如下所示:Javascript 创建jQuery插件对象后与它们交互,javascript,jquery,Javascript,Jquery,我有一个使用轮询更新项目的计时器。我为ticker编写了一个简单的jQuery插件,如下所示: $("#cont ul").ticker(); 它把ul变成了一个股票代码,在li上滚动。要添加新项目,我必须将lis添加到ul,这很好。然而,我的OO希望我能在ticker对象上有一个addItem函数。然而,我不想失去jQuery使用的链接能力 有没有什么方法比将ul添加到列表中更明显,但却适合jQuery的工作方式?jQuery并不是一个真正的OO解决方案,所以你说它不是真正的“jQuery方
$("#cont ul").ticker();
它把ul变成了一个股票代码,在li上滚动。要添加新项目,我必须将lis添加到ul,这很好。然而,我的OO希望我能在ticker对象上有一个addItem函数。然而,我不想失去jQuery使用的链接能力
有没有什么方法比将ul添加到列表中更明显,但却适合jQuery的工作方式?jQuery并不是一个真正的OO解决方案,所以你说它不是真正的“jQuery方式”是正确的。我听说原型都是关于OO的,所以有一天你们可能会想研究一下 但是,没有理由不向jQuery对象添加其他函数:
$.fn.addTickerItem = function(contents) {
this.append(
$("<li></li>").html(contents);
);
return this;
};
$.fn.addTickerItem=函数(内容){
这个.附加(
$(“”)html(目录);
);
归还这个;
};
…但是你会慢慢地污染名称空间。你应该做的是扩展插件的设置:
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.