Взаимодействие с объектами плагина jQuery после их создания - PullRequest
2 голосов
/ 06 декабря 2008

У меня есть тикер, элементы которого обновляются с помощью опроса. Я написал простой плагин jQuery для тикера, который вызывается так:

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

Что превращает уль в тикер, прокручивая ли. Чтобы добавить новые элементы, я должен добавить lis к ul, который отлично работает. Тем не менее, ОО во мне хотел бы иметь функцию addItem для объекта тикера. Однако я не хочу терять цепочку, которую использует jQuery.

Есть ли какой-нибудь метод, который более очевиден, чем добавление ul в список, но который соответствует способу работы jQuery?

Ответы [ 2 ]

5 голосов
/ 06 декабря 2008

что вам нужно сделать, это расширить настройки для вашего плагина:

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 голос
/ 06 декабря 2008

jQuery на самом деле не является ОО-решением, поэтому вы правы, говоря, что это не совсем «способ jQuery». Я слышал, что Prototype это все о ОО, так что вы можете захотеть разобраться в этом однажды.

Нет причины, по которой вы не могли бы добавить еще одну функцию к объекту jQuery:

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

.. но вы бы медленно загрязняли пространство имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...