При использовании следующего кода он работает во всех браузерах, кроме IE, где он возвращает ошибку о том, что строка 'if (data [item] .sub! == null)' равна нулю или не определена.Я специально установил для свойства sub объекта JSON значение null, чтобы я мог проверить это и убедиться, что есть значение, связанное с этим 'sub' свойством.только разрывы IE во всех версиях.
createDropDownCode: function(arr){
// loop through li's of primary menu
that.find("li").each(function(idx){
$(this).append( menusort(arr.menu[idx].sub) );
$('#PrimNav div.menu').hide();
function menusort(data){
if(data !== null)
var html = "<div class='menu'><ul>";
var data_count = 0;
for(item in data){
data.length-1 == data_count ? html += "<li class='last'>" : html += "<li>";
if(data[item].sub !== null){
if(typeof(data[item].sub) === 'object'){
html += "<a href='" + data[item].link + "'><span>" + data[item].name + "</span></a>";
if($.isArray(data[item].sub)){
html += menusort(data[item].sub);
}
}
}
html += "</li>"
data_count += 1;
}
if(data !== null)
html += "</ul></div>";
return html;
}
JSON Передано в функцию 'createDropDownCode' ....
var JSON = {
menu: [
{id: '0',sub: [
{name: 'lorem ipsum 0-0',link: '0-0', sub: null},
{name: 'lorem ipsum 0-1',link: '0-1', sub: null},
{name: 'lorem ipsum 0-2',link: '0-2', sub: null}
]
},
{id: '1',sub: null},
{id: '2',sub: [
{name: 'lorem ipsum 2-0',link: '2-0', sub: null},
{name: 'lorem ipsum 2-1',link: '2-1', sub: null},
{name: 'lorem ipsum 2-2',link: '2-2', sub: [
{name: 'lorem ipsum 2-2-0',link: '2-2-0', sub: null},
{name: 'lorem ipsum 2-2-1',link: '2-2-1', sub: null},
{name: 'lorem ipsum 2-2-2',link: '2-2-2', sub: [
{name: 'lorem ipsum 2-2-2-0',link: '2-2-2-0', sub: null},
{name: 'lorem ipsum 2-2-2-1',link: '2-2-2-1', sub: null},
{name: 'lorem ipsum 2-2-2-2',link: '2-2-2-2', sub: null},
{name: 'lorem ipsum 2-2-2-3',link: '2-2-2-3', sub: null}
]},
{name: 'lorem ipsum 2-2-3',link: '2-2-3', sub: null},
{name: 'lorem ipsum 2-2-4',link: '2-2-4', sub: null},
{name: 'lorem ipsum 2-2-5',link: '2-2-5', sub: null},
{name: 'lorem ipsum 2-2-6',link: '2-2-6', sub: null}
]},
{name: 'lorem ipsum 2-3',link: '2-3', sub: [
{name: 'lorem ipsum 2-3-0',link: '2-3-0', sub: null},
{name: 'lorem ipsum 2-3-1',link: '2-3-1', sub: null},
{name: 'lorem ipsum 2-3-2',link: '2-3-2', sub: [
{name: 'lorem ipsum 2-3-2-0',link: '2-3-2-0', sub: null},
{name: 'lorem ipsum 2-3-2-1',link: '2-3-2-1', sub: null},
{name: 'lorem ipsum 2-3-2-2',link: '2-3-2-2', sub: null},
{name: 'lorem ipsum 2-3-2-3',link: '2-3-2-3', sub: null}
]},
{name: 'lorem ipsum 2-2-6',link: '2-3-3', sub: null}
]},
{name: 'lorem ipsum 2-4',link: '2-4', sub: null},
{name: 'lorem ipsum 2-5',link: '2-5', sub: null}
]
},
{id: '3',sub: null},
{id: '4',sub: null},
{id: '5',sub: null}
]
}