如何创建一个使用另一个jQuery插件的jQuery插件?

时间:2011-08-04 18:09:57

标签: javascript jquery jquery-plugins

我正在尝试制作我的第一个jQuery插件。基本上它就像goMap地图的包装,只要有人在谷歌地图上移动标记,它就会更新一些纬度和经度文本字段。

我有这样设置(这看起来非常粗糙,因为我在coffeescript中编写它并且只是在我编写问题时进行翻译,因此忽略任何缺少的冒号或其他任何请求!):

(function($) {
  $.fn.correctionMap = function(options) {
    defaults = {
      latFieldSelector: "#listing_latitude"
      longFieldSelector: "#listing_longitude"
      resetLinkSelector: "#reset_marker_link"
      marker_id: 'listing_marker'
    }

    options = $.extend(defaults, options);

    // grab the text field elements
    latField = $(options.latFieldSelector)
    longField = $(options.longFieldSelector)

    // inialise the map go-ordinates from the
    // values in the text fields
    initialLat = Number(latField.val())
    initialLong = Number(longField.val())

    // build the options object for the goMap plugin
    map_options = {
      longitude: initialLong
      latitude: initialLat
      zoom: 16
      maptype: 'ROADMAP'

      markers: [{
        longitude: initialLong
        latitude: initialLat
        draggable: true
        id: options.marker_id
      }]
    };

    // add the map to the div
    return this.goMap(map_options)
)(jQuery)

然后,当我用$("#correction_map").correctionMap()调用它时似乎没有做任何事情。然而,当我从插件内部console.log this.goMap(map_options)时,看起来它被初始化很好(粗略检查)。我做错了还是什么?

1 个答案:

答案 0 :(得分:0)

当你使用goMap时,你必须使用CSS给出作为地图目标的div的高度和宽度。我的问题中的Javascript很好。糟糕!