我的代码在这里。
$(document).ready(function() {
loadMainMenu();
lessMenu();
});
function loadMainMenu() {
$.getJSON('./inc/main_menu.json', function(data) {
var html = '';
html += '<ul>';
$.each(data, function(entryIndex, entry) {
if(entry.permission.indexOf(permission) >= 0){
if(entry.sub && entry.sub.length > 0) {
html += '<li class="child nav_box nav_box_padding-all nav_box1';
// 현재 페이지 해당 카테고리 클래스 추가 임시 코드
if(recentPage == entry.name){
html += ' recent';
}else if(entry.name == "마이페이지"){
html += ' mypage';
}
html += '"><a class="nav_box_label" href=' + entry.link + ' title=' + entry.permission + '>' + entry.name + '</a><span class="less">▼</span><span class="more">▲</span><ul>';
$.each(entry.sub, function(key, val) {
html += '<li><a href=' + val.link + ' title=' + val.permission + '>' + val.name + '</a></li>';
});
html += '</ul></li>';
} else {
html += '<li><a href=' + entry.link + ' title=' + entry.permission + '>' + entry.name + '</a></li>';
}
}
});
html += '</ul>';
$("nav").html(html);
});
return false;
}
function lessMenu() {
$("li.nav_box").not(".mypage").children("ul").hide();console.log("ok!");
}
li.nav_box是页面加载jQuery时生成的元素。
我可以在控制台上看到确定的消息。
但是隐藏功能不起作用。
当我在控制台上手动键入lessMenu()时,效果很好。
请给我建议!
最佳答案
loadMainMenu()
在内部执行异步操作,这意味着您要在该操作完成之前执行lessMenu()
。
将lessMenu()
调用移到该异步操作的回调中:
$.getJSON('./inc/main_menu.json', function(data) {
// the rest of your code, then...
lessMenu();
});