Javascript 创建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方

我有一个使用轮询更新项目的计时器。我为ticker编写了一个简单的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.