后台菜单是ajax获取后解析json生成的html片段然后html()添加进去的,jq似乎无法选择这些新增的节点,请问该如何解决?
function _tree(rows)
{
var str = '';
$.each(rows, function(i, e) {
var li_class = typeof(e.children) == 'undefined' ? '' : 'treeview';
var allow_a = typeof(e.children) == 'undefined' ? 'data-menuid='+e.id : '';
var menu_icon = e.menu_icon == '' ? 'link' : e.menu_icon;
var menu_link = typeof(e.children) == 'undefined' ? e.menu_link : '#';
var container = typeof(e.children) == 'undefined'
? ''
: '<span class="pull-right-container">'+
'<i class="fa fa-angle-left pull-right"></i>'+
'</span>';
str += '<li class="'+li_class+'"><a '+allow_a+' href="'+menu_link+'"><i class="fa fa-'+menu_icon+'"></i> <span>'+e.menu_name+'</span>'+container+'</a>';
if (typeof(e.children) != 'undefined') {
str += '<ul class="treeview-menu"'+'>';
str += _tree(e.children);
str += '</ul>';
}
str += '</li>';
});
return str;
}
$(function() {
_get({type: 'json'}, Japi.menuGet, function(respond) {
if (respond.code.errcode == Japi.SUCCESS_STATUS) {
$('#admin-menu').html(_tree(respond.data));
}
});
当我选择节点的时候
var n = $('#admin-menu [data-menuid='+nowId+']');
console.log(n);
似乎找不到这个节点,请问问题处在什么地方
估计可能是,因为菜单的生成是异步的,当你取菜单的时候还没有生成菜单。你可以试着打开调试工具,直接在控制台手动输入查找菜单的方法看一下。