Возвращаемое значение JQuery
Я использовал код:
jQuery.fn.MyFunction = function(){
return this.each(function() {
attributes = "test";
return attributes;
});}
Но когда я звоню
var1 = $(this).MyFunction();alert(var1);
У меня есть [объект], но не "тест".
Как разрешить плагин jquery вернуть какое-то значение?
Ответы
Ответ 1
Плагины jQuery обычно предназначены для возврата объекта jQuery, чтобы вы могли цеплять вызовы методов:
jQuery("test").method1().method2() ...
Если вы хотите вернуть что-то еще, используйте следующий синтаксис:
jQuery.fn.extend({
myFunction: function( args ) {
attributes = "test";
return attributes;
}
});
или получить доступ к нему через свой индекс, используя []
.
Ответ 2
Вот еще раз ваш код:
jQuery.fn.MyFunction = function() { #1
return this.each(function() { #2
return "abc"; #3
}); #4
}; #5
Теперь проверьте, что делает каждая строка.
- Объявляем свойство
MyFunction
, которое является функцией для каждого объекта jQuery.
- Эта строка является первым и последним выражением
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);
Ответ 3
Я верю, что jQuery возвращает объект, поэтому вы можете поддерживать цепочки различных функций.
Ответ 4
Хмм, возможно, используйте
var1 = $(this)[0].MyFunction();alert(var1);
Но я не уверен, что это то, что вам нужно, или если ваш код работает вообще. Чего вы пытаетесь достичь? Вы действительно хотите вызвать this.each()
?
Как и другие, jQuery в большинстве случаев возвращает объекты jQuery, и доступ к фактическому объекту может быть выполнен с помощью индексатора []
или метода get
.