【问题标题】:Why does my fake constant assignment only work once in jQuery?为什么我的假常量赋值在 jQuery 中只工作一次?
【发布时间】:2013-11-18 13:57:57
【问题描述】:

我正在使用 gomap 向地图添加一些标记。 gomap 允许您添加您选择的图标,而不是被相同的旧标记卡住。我有几段这样的代码:

var constants = {
    'nflIcon': 'Content/Images/green.png',
    'bigBurrito': 'Content/Images/humongousBurrito.png'
};

$(function () {
    $("#map").goMap({
        latitude: 36.75,
        longitude: -100,
        maptype: 'ROADMAP',
        zoom: 5
    });

$.goMap.createMarker({
    address: 'Green Bay, Wisconsin',
    title: 'Green Bay Packers',
    group: 'NFL',
    icon: constants.nflIcon,
    html: getPackers()
});

$.goMap.createMarker({
    address: 'San Francisco, California',
    title: 'San Francisco 49ers',
    group: 'NFL',
    icon: constants.nlfIcon,
    html: '<h1>San Francisco 49ers</h1>'
});

...但是 constants.nflIcon 的分配仅适用于一个(使用 Green Bay Packers 标记);所有其他人都使用传统的橙色反向泪珠标记。

为什么?

【问题讨论】:

  • 这可能与您的两个示例中的nflnlf 有关。 :-) 如有疑问,请将正在工作的那个复制并粘贴到不工作的那个(然后通过抽象调用来消除复制粘贴的需要)。
  • 天堂对 Murgatroid!我不是阅读障碍者,但我在互联网上玩过一个。

标签: jquery html jquery-plugins google-maps-markers


【解决方案1】:

您在非工作通话中使用nlfIcon,在工作通话中使用nflIcon

$.goMap.createMarker({
    address: 'San Francisco, California',
    title: 'San Francisco 49ers',
    group: 'NFL',
    icon: constants.nflIcon, // This is now fixed
    html: '<h1>San Francisco 49ers</h1>'
});

如果我要经常这样做,我会围绕createMarker 创建一个包装器来简化我的代码。例如,您可能会执行以下操作:

function createMarker(options) {
    var defaults = {icon: constants.nflIcon};
    $.goMap.createMarker($.extend({}, defaults, options));
}

function createNFLMarker(options) {
    var defaults = {group: "NFL"};
    createMarker($.extend({}, defaults, options));
}

然后,您可以致电createNFLMarker 并提供每个团队更改的详细信息(地址、头衔等),而不必让多个复制粘贴的代码部分保持同步。

【讨论】:

  • 这是解决方案... :) 一个好主意是在您开始思考问题所在之前打开控制台(在大多数浏览器中为 F12)以检查错误 - 我打赌您会得到在这种情况下为空引用异常。
  • @Alexus - 在这种情况下只是undefined。 JavaScript 很容易上手。
  • 是的,我更喜欢 C# :)
猜你喜欢
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多