2012-06-05 2 views
15

Есть ли способ добавить методы к объектам jQuery?Как добавить новые методы в объект jQuery?

К примеру, у меня есть объект JQuery

a = $('div') 

Я хотел бы, чтобы каждый объект, который был назначен так, будет иметь конкретный метод (doSomething()), так что я мог бы вызвать его как

a = $('.foo') 
a.doSomething() 

b = $('.bar') 
b.doSomething() 

ответ

16

Вы должны добавить функцию к $.fn. Обратите внимание, что внутри функции this будет ссылаться на объект jQuery, а не на объект DOM.

$.fn.doSomething = function() { 
    this.css('color', 'red'); 
}; 

$('#retk').doSomething(); 

jsFiddle Demo

Пожалуйста, прочитайте о writing jQuery plugins дополнительных руководящих принципов.

1

добавить его как

$.fn.doSomething = function(data){ 
    // data is the argument passed to doSomething 
    return this.each(function(){ 
     var elem = $(this); 
     //perform operation on elem 
     // like to change background color use 
     elem.css('background-color','red'); 

    }); 
} 
+1

Я бы просто отметил, что это повлияет на * любой * созданный объект jQuery. – jAndy

+0

@jAndy Обновленный ответ. Не могли бы вы проверить и подтвердить, правильно ли это сейчас. –

+0

'.css()' метод не очень хороший пример здесь, делает использование '.each()' бессмысленным. – kapa