2009-04-23 2 views
1

Как я могу вызвать функцию из объекта в javascript, например, например, в jquery вы вызываете myDiv.html(), чтобы получить html этого div.Вызов функции из объекта: object.function()

Так что я хочу, чтобы это работало:

function bar(){ 
return this.html(); 
} 

alert($('#foo').bar()); 

это упрощенный пример, поэтому, пожалуйста, не говорите: просто делать $ ('# Foo') HTML() :)

.

ответ

9
jQuery.fn.extend({ 
    bar: function() { 
     return this.html(); 
    } 
}); 

alert($('#foo').bar()); 
+0

Данг, ты избил меня. Хорошая работа. ;) – KyleFarris

5

Вы имеете в виду, как вы вызываете функцию с объектом в контексте?

Это работы-

function bar() { 
    return this.html(); 
} 

bar.apply($('#foo')); 

Или, если вы хотите прикрепить метод к объекту постоянно,

obj = {x: 1}; 
obj.prototype.bar = function() {return this.x;}; 
obj.bar(); 
+0

Чистая и (самая важная) библиотека агностика. +1 –

+0

Однако в этом контексте (чтобы не злоупотреблять словом) метод вызова был бы более близок к применению. –

+0

Постоянно => (в приведенном выше ответе) означает, что если вы хотите, чтобы все объекты наследовали этот метод в его исходном контексте, используйте свойство prototype для назначения нового метода объекту. –

-1

Чтобы добавить getHtml функцию к div элементу с идентификатором foo вы могли бы сделать это:

$("#foo")[0].getHtml = function() { 
    return this.innerHTML; 
}; 
alert($("#foo")[0].getHtml()); 

Если это не так, что вы хотели, но, скорее, расширить jQuery, вам следует взглянуть на сообщение от Alex Barrett.

Смежные вопросы