написать функцию jquery, которая принимает параметры и объект - PullRequest
0 голосов
/ 09 декабря 2010

Это должно быть легко.

Как написать функцию jquery, которая получает вызывающий объект и некоторые параметры.

Код моей функции:

new function($) {
  $.fn.addcolor = function(param1, param2, param3, param4) {
    // here i would like to retrieve the 'caller' object (div.foo in this case)

  }
} (jQuery);

Мой код, который «вызывает» функцию:

$('div.foo').click(function() {
  $(this).addcolor(1, 2, 3, 4);
});

Я могу получить параметры без проблем, но я хочу получить содержимое div.foo в функции и добавить к нему некоторое содержимое.

Ответы [ 5 ]

2 голосов
/ 09 декабря 2010

В вашем плагине addcolor, this будет представлять тот же объект jQuery, для которого был вызван ваш плагин.

 // v---jQuery object
$(this).addcolor(1, 2, 3, 4);

(function($) {
  $.fn.addcolor = function(param1, param2, param3, param4) {
    // here "this" is the same object
    // this[ 0 ] to get the first DOM element
    // this.each(function(...   to iterate over the collection
  }
})(jQuery);
2 голосов
/ 09 декабря 2010

В функциях плагина jQuery этот элемент ссылается на это.

function($) {
  $.fn.addcolor = function(param1, param2, param3, param4) {
    // here i would like to retrieve the 'caller' object (div.foo in this case)
    var divcontent = $(this).html();
  }
} (jQuery);
2 голосов
/ 09 декабря 2010

Вы ищете this.

Плагины jQuery в $.fn являются обычными методами на прототипе $. (jQuery назначает $.fn на $.prototype)
Как и любой другой метод, вы можете получить контекст, в котором он был вызван, используя this.

1 голос
/ 09 декабря 2010

this.whither, это один путь ...

Есть также объект аргументов, который вы можете вызвать.т.е.: arguments.length или arguments ["parm"]

0 голосов
/ 09 декабря 2010

Для расширения jQuery я использовал:

(function($) {
    $.fn.extend({
        addcolor: function(param1, param2, param3, param4) {
            return this.empty().append(something);
        }
    });
})(jQuery);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...