【问题标题】:jquery $(this).html(var) not working in IEjquery $(this).html(var) 在 IE 中不起作用
【发布时间】:2013-05-18 09:15:12
【问题描述】:

您好,我有一个 var “status”,应该使用 Jquery 中的 .html 将其插入到锚标记中。

(<a class="status"><span>$status</span></a>) 

这在 Chrome 中就像一个魅力,但在 IE10 或 Firefox 中却不是。我在这个函数的底部添加了 console.log,它正确地写入了 var 'status',因为它在 Chrome 中来回切换,但在 IE 或 Firefox 中没有。那里的日志写道该变量是“未定义的”。

 function clickPrice(ev) {
    pp = $(this).closest('.price-point')
    status = pp.attr('data-status')
    if (status=='active') status = 'inactive'
    else status = 'active'
    pp.addClass('dirty')
    pp.attr('data-status', status)
    $(this).html(status)
    console.log(status)
}

很奇怪。

【问题讨论】:

  • status 在哪里初始化?
  • 反对分号?
  • 添加了分号但没有改变行为:)
  • Nomad 在这里初始化 status = pp.attr('data-status');

标签: jquery firefox internet-explorer-10


【解决方案1】:

如果没有看到像 jsFiddle 这样的实际功能代码块,我们很难知道在不同浏览器中的行为有何不同。我建议您从在本地定义变量开始,这样您就不会无意中与其他全局变量混淆:

function clickPrice(ev) {
    var pp = $(this).closest('.price-point');
    var status = pp.attr('data-status');
    if (status === 'active') {
       status = 'inactive';
    } else {
        status = 'active';
    }  
    pp.addClass('dirty').attr('data-status', status);
    $(this).html(status);
    console.log(status);
}

为了获得进一步帮助的最佳机会,请向我们展示相关的 HTML、事件处理程序并将其放入正常运行的 jsFiddle 中。我还建议您检查浏览器错误控制台或调试控制台,看看是否有任何相关的脚本错误可能会在代码完成之前中断代码。

【讨论】:

  • 我实际上在这个jsfiddle 上测试了ie(在他的上下文之外)并且它没有工作,然后如果我添加var 作为状态,它可以工作。所以无论上下文如何,它似乎都是var
  • 感谢您的帮助。我没有编写初始代码并忽略了丢失的 var :)
猜你喜欢
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 2012-10-07
  • 2011-02-13
  • 2012-09-21
  • 2011-09-01
相关资源
最近更新 更多