jQuery隐藏显示奇怪的行为

时间:2013-01-16 11:12:02

标签: jquery

我遇到了一个我以前从未见过的jQuery问题。我的脚本隐藏了某些包装器,这适用于Firefox和Chrome,但不适用于IE。奇怪的是当我打开IE控制台并刷新页面以查看日志时,它就像我期望的那样工作。它仅在使用开放式工具打开时进行修复!

这是一个控制台代码段:

$.get('/help-and-advice/purchase-wizard/product-details/' + product_id, function(data) {

          console.log(data);

          $.each(data.show, function() {
            $.each(this, function(index) {
              $('#' + data.show[index]).show();
            });
          });

          $.each(data.hide, function() {
            $.each(this, function(index) {
              $('#' + data.hide[index]).hide();
            });
          });

在控制台日志中,我想隐藏的包装器也列在data.show对象中。

1 个答案:

答案 0 :(得分:2)

当控制台语句存在且控制台未打开时,IE将失败

将其更改为

window.console && console.log(...)

或将其评论或记得在测试前点击F12


我有jsfiddle

简单版本:

if (!window.console) window.console={ log:function(str) { alert(str) } }

处理逗号分隔参数的更复杂版本 - 它不解包对象但可以处理一层复杂性

if (!window.console) 
  window.console={ log:function() { 
    var text = [];
    for (var a,i=0;i<arguments.length;i++) {
      a=arguments[i];
      text.push(typeof a+": "+(typeof a == "object" ? a.toString():a));
    }
    alert(text.join('\n'))
  }
}

console.log("test",new Date())