显示奇怪行为的jQuery隐藏

显示奇怪行为的jQuery隐藏,jquery,Jquery,我遇到了一个jQuery问题,这是我以前没有见过的。我的脚本隐藏了某些包装,这在Firefox和Chrome中有效,但在IE中不起作用。奇怪的是,当我打开IE控制台并刷新页面以查看日志时,它也会按照我的预期工作。它只在开发者工具打开的情况下刷新时修复 以下是控制台代码段: $.get('/help-and-advice/purchase-wizard/product-details/' + product_id, function(data) { console.log(d

我遇到了一个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对象中。

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

换成

window.console && console.log(...)
或者在测试前,将其注释掉,或者记住点击F12


我有这个:

简单版本:

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())
if(!window.console)
console={log:function(){
var text=[];

对于(var a,i=0;i可选地,完全删除
console.log()
。干杯,伙计。好老的难以置信的可靠、完美的IE:D