$(function() {
  
$.get("../file/test.xml", function(data) {
var data = $(data).find("root").find("menu");
data.each(function() {
var addmenu = "<li><a href='#'>"+$(this).attr("id")+"</a></li>"; 
var t = $("body ul").append(addmenu);
})

$("body ul li").addClass("menu");

        data.each(function(i){
         var submenu="<ul>";
         data.eq(i).find("submenu").each(function(){
         var tab = "<li><a href='#'>"+$(this).text()+"</a></li>";
         submenu = submenu+tab;
         })
         submenu =submenu+"</ul>";
     $(".menu").eq(i).append(submenu);  
        })
}) $("body ul li a").on("click",function(){
alert("aaa");
var node = $(this).next();
if(node.css("display")=="none"){
node.show();
}else{
node.hide();
}
})
})

解决方案 »

  1.   

    $("body ul li a").click(function(){});
    不知道是不是这个原因
      

  2.   

    $(function() {
      
    $.get("../file/test.xml", function(data) {
    var data = $(data.documentElement).find("root").find("menu");
    data.each(function() {
    var addmenu = "<li><a href='#'>"+$(this).attr("id")+"</a></li>"; 
    var t = $("body ul").append(addmenu);
    })$("body ul li").addClass("menu");        data.each(function(i){
             var submenu="<ul>";
             data.eq(i).find("submenu").each(function(){
             var tab = "<li><a href='#'>"+$(this).text()+"</a></li>";
             submenu = submenu+tab;
             })
             submenu =submenu+"</ul>";
         $(".menu").eq(i).append(submenu);  
            })
    })$("body ul li a").on("click",function(){
    alert("aaa");
    var node = $(this).next();
    if(node.css("display")=="none"){
    node.show();
    }else{
    node.hide();
    }
    })
    })试试
      

  3.   


    $("body ul li a").on("click",function(){将on换成bind吧
      

  4.   


    $(function() {
    $.get("test.xml", function(data) {
    var data = $(data).find("root").find("menu");
    data.each(function() {
    var addmenu = "<li><a href='#'>"+$(this).attr("id")+"</a></li>"; 
    var t = $("body ul").append(addmenu);
    });
    $("body ul li").addClass("menu");
    data.each(function(i){
     var submenu="<ul>";
     data.eq(i).find("submenu").each(function(){var tab = "<li><a href='#'>"+$(this).text()+"</a></li>";submenu = submenu+tab;})
     submenu =submenu+"</ul>";
     $(".menu").eq(i).append(submenu);  
    });

    $("body ul li a").on("click",function(){
    alert("aaa");
    var node = $(this).next();
    if(node.css("display")=="none"){
    node.show();
    }
    else{
    node.hide();
    }
    })

    })
    })
    其实是楼主的绑定事件代码放置的位置问题。
      

  5.   

    楼主各个部分代码都没有写错,就是写得有点啰嗦。
    $.get("../file/test.xml", function(data) {
         
          // 绑定事件的代码要放在这里 才其作用的。});
    //而楼主放到这个位置,所以当配置事件方法的时候,a元素还没有添加到DOM中,所以根本就找不到 a
      

  6.   

    因为你绑定事件的位置不对,你是在调用ajax的回调函数中添加的a标签,当程序执行完$.get()请求后,就执行了从
    $("body ul li").addClass("menu");开始的代码,所以你是在这之后为a标签绑定事件,但这时候a标签还没有生成,所以绑定不上,你也可以用delegate将事件绑定到ul元素上,这样即使你绑定的时候a标签没有加载出来,也不会出现问题,建议看看jQuery绑定事件的几种机制以及他们之间的区别。