Возвращаемое значение jQuery

Я использовал код:

jQuery.fn.MyFunction = function(){
return this.each(function() {
    attributes = "test";

    return attributes;
});}

Но когда я звоню

 var1 = $(this).MyFunction();alert(var1);

Я добрался [объект], но не "тест".

Как позволить плагин jQuery, возвращают некоторое значение?

11
задан Anton 13 March 2010 в 14:35
поделиться

4 ответа

Плагины jQuery обычно предназначены для возврата объекта jQuery, поэтому вы можете объединять вызовы методов:

jQuery("test").method1().method2() ...

Если вы хотите вернуть что-то еще, используйте следующий синтаксис :


jQuery.fn.extend({
    myFunction: function( args ) {
            attributes = "test";

            return attributes;
    }
});

или получить доступ к нему через его индекс, используя [].

9
ответ дан 3 December 2019 в 07:37
поделиться

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

1
ответ дан 3 December 2019 в 07:37
поделиться

Вот еще раз ваш код:

jQuery.fn.MyFunction = function() { #1
   return this.each(function() {    #2
      return "abc";                 #3
   });                              #4
};                                  #5

Теперь давайте проверим, что делает каждая строка.

  1. Мы объявляем свойство MyFunction , которое является функцией для каждого объекта jQuery.
  2. Это первая и последняя строка jQuery.MyFunction () . Мы возвращаем результат this.each () , а не результат лямбда-функции (используется в качестве аргумента для jQuery.each () ). И this.each () возвращает себя, поэтому в конечном результате вы получаете возвращенный объект jQuery.

Строки 3-5 на самом деле не важны.

Просто рассмотрите эти два примера:

jQuery.fn.MyFunction = function() {
    return this.each(function() {
        return "abc";
    });
};

jQuery.fn.AnotherFunction = function() {
    return "Hello World";
};

var MyFunctionResult = $(document).MyFunction();
var AnotherFunctionResult = $(document).AnotherFunction();

alert(MyFunctionResult);
alert(AnotherFunctionResult);
6
ответ дан 3 December 2019 в 07:37
поделиться

Хм, возможно, использовать

var1 = $(this)[0].MyFunction();alert(var1);

Но я не уверен, что это то, что вы хотите, и работает ли ваш код вообще. Чего вы пытаетесь добиться? Вы уверены, что хотите вызвать this.each()?

Как сказали другие, jQuery в большинстве случаев возвращает объекты jQuery, а доступ к фактическому объекту можно получить с помощью индексатора [] или метода get.

0
ответ дан 3 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: