为什么jquery插件函数总是返回对象而不是字符串?
这是我的自定义 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") ),
我无法弄清楚为什么返回链接不起作用?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
因为
each
的返回值是您调用each
的对象。函数each
calls的返回值用于判断是否停止循环(即迭代函数可以返回false
来停止循环) ;— 文档链接)。从您的代码中不清楚您真正想在
getmyValue
中做什么;返回您存储在 jQuery 实例本身上的值?返回存储在第一个包含的元素上的myVal
?返回所有包含元素的myVal
值的数组?如果您的意思是通过插件存储在 jQuery 实例上的
myVal
:如果您的意思是第一个元素上的
myVal
(请注意,在典型情况下它是原始 DOM 元素) :如果您的意思是所有匹配元素中的
myVal
值的数组(同样,在典型情况下这些将是原始 DOM 元素):...它使用
map
获取 jQuery 包装的值数组,然后get
从中获取原始数组。Because the return value of
each
is the object on which you calledeach
. The return value of the functioneach
calls is used to determine whether to stop looping (that is, the iteration function can returnfalse
to stop looping — docs link).It's unclear from your code what you really want to do in
getmyValue
; return a value you've stored on the jQuery instance itself? Return themyVal
stored on the first contained element? Return an array of themyVal
values from all the contained elements?If you meant a
myVal
stored on the jQuery instance by your plugin:If you meant the
myVal
on the first element (note that it's a raw DOM element in the typical case):If you meant an array of the
myVal
values from all the matched elements (again, these will be raw DOM elements in the typical case):...which uses
map
to get a jQuery-wrapped array of the values, and thenget
to get the raw array from it.您返回的是
this.each()
的结果,而不是this.myVal
:You're returning the result of
this.each()
rather thanthis.myVal
:.each
的返回是一个对象。如果将其替换为.map
,那么您的代码将返回以逗号分隔的值列表。jQuery 地图
The return of the
.each
is an object. If you replace that with.map
then your code will return a comma delimited list of values.jQuery Map