我正在使用jquery 1.6.2。我的ie控制台中显示的错误是对方法或属性访问的意外调用。 jquery.min.js,第17行,字符29094。
我在所有现代浏览器上进行了测试,它在控制台上没有任何错误就完美地工作,但是在尝试使用ie8时,我的xml文件没有加载。我的ajax调用是OKAY,因为selectXml可以运行,但不是里面的代码(它应该没有任何问题,因为它在其他浏览器上工作,我已经进行了XML验证),已经挣扎了好几个小时。我认为ie8与jquery无法正常工作。
$(document).ready(function() {
$.ajax({
type: "GET",
url: "menu.xml",
dataType:"text",
success: selectXml
});
(我的selectXml函数)
function selectXml (xml) {
var xmlDoc = $.parseXML(xml);
console.log(xmlDoc);
var i = 0,
j = 0,
k = 0,
l = 0,
maxCat = $(xmlDoc).find("categorie").length,
maxPage = 14,
numPlate = 0,
numSection = 2,
page = 0,
queryXml,
title,
theNo,
thePlate,
thePrice,
theSection;
//for each page divide it in 2 sections
for(i=1; i<=maxPage; i++){
if( j < maxCat){
//for each sections add the title and left, right section
//for each left right section, fill up the dishes
for(k=0; k<numSection; k++){
queryXml = $(xmlDoc).find('categorie').eq(j);
title = queryXml.find("title[lang=" + jQuery.fn.language + "]").text();
numPlate = queryXml.find('plate').length;
$('#menu'+ i).append('<section></section>');
$('section').eq(j).append('<div class="menuTitle"><h1>'+ title +'</h1><div class="ribbon"></div></div><div class="menuLeft"><ul></ul></div><div class="menuRight"><ul></ul></div>');
theSection = $('section').eq(j);
for(l=0; l<numPlate; l++){
if(l< (numPlate/2)){
theNo = queryXml.find('plate').eq(l).find('number').text();
thePrice = queryXml.find('plate').eq(l).find('price').text();
thePlate = queryXml.find('plate').eq(l).find('description[lang='+jQuery.fn.language+']').text();
//console.log(thePlate);
$('section').eq(j).find('.menuLeft ul').append('<li><span class="itemNumber">' + theNo +'</span><span class="itemName">'+ thePlate+'</span> <span class="itemPrice">'+ thePrice+'</span></li>');
}
else {
theNo = queryXml.find('plate').eq(l).find('number').text();
thePrice = queryXml.find('plate').eq(l).find('price').text();
thePlate = queryXml.find('plate').eq(l).find('description[lang='+jQuery.fn.language+']').text();
$('section').eq(j).find('.menuRight ul').append('<li><span class="itemNumber">' + theNo +'</span><span class="itemName">'+ thePlate+'</span> <span class="itemPrice">'+ thePrice+'</span></li>');
}
};
numPlate = $(this).find('plate').length;
j++;
}
}//end if
}//end for
}
答案 0 :(得分:1)
另一种方法是让IE8首先通过在您的页面中包含类似Modernizr(http://modernizr.com/)的内容来理解html5元素。然后让剩下的就像我们期望的那样运行。
答案 1 :(得分:0)
问题出在附加代码中,我将section用作容器。 ie8可能不理解它,这就是为什么它甚至没有显示信息,当你做警告它正确显示我的xml的内容...多么糟糕。变形IE ...这是我的解决方案,用一些类替换div到div。 经验教训:当使用jquery更改dom时,不要使用html5元素
答案 2 :(得分:0)
我在下面使用此代码,它对我有用。我测试IE8,IE9,chrome,ff都没有问题!
// XML content look like this
<root>
<publish>
<store>
<book title="How to fix IE"/>
<book title="...."/>
</store>
</publish>
</root>
// Build XML document
var xDoc = $.parseXML(strXml);
// create new child element using XML Document
var xBook = xDoc.createElement("book");
xBook.setAttribute("title", "How to fix bad ass IE!");
// or you can using jquery
$(xBook).attr("authr", "Bill ...");
// Append child element to some where in XML Document
var xStore = $(xDoc).find("store");
xStore.append(xBook);