&引用;TypeError:a未定义;使用不带元素的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

我有以下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({
      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的
类型
,看看你得到了什么。