这是我的自定义jquery插件的代码:
(function($){
$.fn.extend({
getmyValue : function(){
return this.each(function() {
return this.myVal;
});
},
initPlugin : function(){
return this.each(function() {
this.myVal='Some results';
});
}
});
})(jQuery);
当我运行此代码时:
$(document).ready(function() {
$("#div").initPlugin();
alert($("#div").getmyValue());
});
返回的值不是假定的普通字符串,而是返回一个对象($(“#div”))
我无法弄清楚为什么返回链不起作用?
答案 0 :(得分:4)
因为each
的返回值是您调用each
的对象。函数each
调用的返回值用于确定是否停止循环(即,迭代函数可以返回false
以停止循环 - docs link )。
从您的代码中不清楚您在getmyValue
中真正想做什么;返回你存储在jQuery实例本身的值?返回存储在第一个包含元素上的myVal
?从所有包含的元素返回myVal
值的数组?
如果你的意思是你的插件存储在jQuery实例上的myVal
:
getmyValue : function(){
// Here, `this` is the jQuery instance on which `getmyvalue` was called
return this.myVal;
},
如果你的意思是第一个元素上的myVal
(注意它是典型情况下的原始DOM元素):
getmyValue : function(){
// Here, `this` is the jQuery instance on which `getmyvalue` was called.
// `this[0]` is the first matched element (a raw DOM element, typically).
// Note we check before accessing it to see if it's there, since a jQuery
// instance may have matched zero elements.
return this[0] ? this[0].myVal : undefined;
},
如果你的意思是来自所有匹配元素的myVal
值数组(在典型情况下,这些将是原始DOM元素):
getmyValue : function(){
// Here, `this` is the jQuery instance on which `getmyvalue` was called.
return this.map(function() {
// Here, though, `this` one of the elements wrapped by the jQuery,
// instance typically a raw DOM element. (Each of them in a loop.)
return this.myVal;
}).get();
},
答案 1 :(得分:1)
您将返回this.each()
而不是this.myVal
的结果:
getmyValue: function() {
return this.myVal;
}
答案 2 :(得分:0)
.each
的返回是一个对象。如果用.map
替换它,那么您的代码将返回以逗号分隔的值列表。