2012-12-21 64 views
1

过去几天我一直在调查这个问题,无法弄清楚。下面的代码根据当前页面类搜索外部文件中的内容,然后将内容加载到页面上的任何匹配的ID中。它适用于Chrome,Firefox,IE9,但最近停止在IE8中工作,我无法弄清楚为什么。任何想法将不胜感激。.load在IE8中不工作

HTML看起来像准备

$("div.shared").each(function(){ 
     var Body = $(document).find("body"); 
     var contentID = ("#" + $(this).attr("id")); 
     var pathname = "" 

     if(Body.hasClass("pigman")){ 
      var pathname = "/dev/jmsracing/content/pigman/shared-content-include.html" 
     } else if(Body.hasClass("marion-arts")){ 
      var pathname = "/dev/jmsracing/content/marion-arts/shared-content-include.html" 
     } else if(Body.hasClass("jms")){ 
      var pathname = "/dev/jmsracing/content/jms/shared-content-include.html" 
      alert('hello'); 
     } 

     $(contentID).load(pathname + " " + contentID); 
    }); 
+2

你错过了'var pathname =“”'是你运行的代码中的错误? – KTastrophy

+1

控制台中是否存在错误? Ajax请求是否正确? – epascarello

+0

可能会有这帮助:http://stackoverflow.com/questions/1061525/jquerys-load-not-working-in-ie-but-fine-in-firefox-chrome-and-safari – Jai

回答

1

运行此

<body class="jms"> 
    <div id="mainHomeContent" class="shared"></div> 
</body> 

的jQuery试试这个:

$("div.shared").each(function() { 
    //combined into one var statement...not really necessary. 
    var $body = $("body"), 
     contentId = "#" + $(this).attr("id"), 
     pathname = ""; 

    //you've declared pathname above no need for "var" each time below 
    //also added missing semi colons 
    if ($body.hasClass("pigman")) { 
     pathname = "/dev/jmsracing/content/pigman/shared-content-include.html"; 
    } else if ($body.hasClass("marion-arts")) { 
     pathname = "/dev/jmsracing/content/marion-arts/shared-content-include.html"; 
    } else if ($body.hasClass("jms")) { 
     pathname = "/dev/jmsracing/content/jms/shared-content-include.html"; 
     alert('hello'); 
    } 
    // $(this) and $(contentId) are the same element 
    // since you are getting the "id" from "this" 
    // us $(this) instead 
    $(this).load(pathname + " " + contentId); 
}); 
+1

这与OP的代码有何不同。 – Jai

+0

@Jai - 他没有重定义路径名4次,没有使用低效的身体选择器并正确地通过jslint –

+0

所以它主要只是清理。谢谢您的帮助。两者都是很好的答案。另外我更改了 $(this).load(pathname +“”+ contentId +“Content”); 所以加载的div不会有相同的名称。再次感谢 – trobbins26

2

什么,我认为是他与同id其中ie迭代非常严格关于它,所以这应该是解决方案:

$(function() { 
    var Body = $(document).find("body"); 
    var contentID = ("#" + $(this).attr("id")); 
    var pathname = "" 

    if (Body.hasClass("pigman")) { 
     var pathname = "/dev/jmsracing/content/pigman/shared-content-include.html" 
    } else if (Body.hasClass("marion-arts")) { 
     var pathname = "/dev/jmsracing/content/marion-arts/shared-content-include.html" 
    } else if (Body.hasClass("jms")) { 
     var pathname = "/dev/jmsracing/content/jms/shared-content-include.html" 
     alert('hello'); 
    } 

    $(contentID).load(pathname + " " + contentID); 
});​