&引用;TypeError:a未定义;使用不带元素的JQuery插件时
我有以下JQuery插件:&引用;TypeError:a未定义;使用不带元素的JQuery插件时,jquery,Jquery,我有以下JQuery插件: $(function () { $.fn.mapit = function (position, styles) { var self = $(this); var map = new google.maps.Map(self[0], { center: position, styles: styles }); var marker = new google.maps.Marker({ p
$(function () {
$.fn.mapit = function (position, styles) {
var self = $(this);
var map = new google.maps.Map(self[0], {
center: position,
styles: styles
});
var marker = new google.maps.Marker({
position: position,
map: map
});
return $(this);
}
});
我用这样的方式来称呼它:
google.load("maps", "3", callback: function() {
$("div#office").mapit({ lat: 38.73972, lng: -9.144263 }, [{"featureType":"all"}]);
});
问题是,当我调用mapit时,页面上没有div#office,我得到以下错误:
TypeError: a is undefined
我应该在插件中做些什么来避免这种情况?由于代码是您自己的插件,您可以通过添加
return $(this).each(function() {
到插件的顶部:
$(function () {
$.fn.mapit = function (position, styles) {
return $(this).each(function() {
var self = this;
var map = new google.maps.Map(self, {
center: position,
styles: styles
});
var marker = new google.maps.Marker({
position: position,
map: map
});
}
}
});
有关更多信息,请参阅插件教程,具体使用each
方法:
然后,如果
div#office
不存在,则循环中没有任何内容,一切正常。在调用mapit之前添加if($(“div#office”).length>0)
?检查插件中的self的类型
,看看你得到了什么。