在jQuery中动态添加单击处理程序

在jQuery中动态添加单击处理程序,jquery,Jquery,我有一个MVC应用程序,其中顶部菜单是动态构建的,如下所示: $.each(data, function (index, dataMenu) { if (i == 0) { stringBuilder.push('<li class="home"><a href="#">' + dataMenu.MenuName + '</a></li>');

我有一个MVC应用程序,其中顶部菜单是动态构建的,如下所示:

 $.each(data, function (index, dataMenu) {
                if (i == 0) {
                    stringBuilder.push('<li class="home"><a href="#">' + dataMenu.MenuName + '</a></li>');
                    i++;
                }
                else {


                    stringBuilder.push('<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">' + dataMenu.MenuName + '</a>');
                    stringBuilder.push('<ul class="dropdown-menu">');
                    $.each(dataMenu.GetallMenus, function (index, submnu) {
                        stringBuilder.push('<li class=""><a data-ajax="true" data-ajax-mode="replace" data-ajax-update="#content-area" href="' + submnu.MenuItemUrl + '">' + submnu.MenuName + '</a></li>');
                    });
                    stringBuilder.push('</ul>');
                    stringBuilder.push('</li>');
                }
            });
            stringBuilder.push('</ul>');
            $("#menu").append(stringBuilder.join(''));
$。每个(数据、函数(索引、数据菜单){
如果(i==0){
stringBuilder.push(“
  • ”); i++; } 否则{ stringBuilder.push(“
  • ”); stringBuilder.push(“
      ”); $.each(dataMenu.GetAllMenu,函数(索引,子MNU){ stringBuilder.push(“
    • ”); }); stringBuilder.push(“
    ”); stringBuilder.push(“
  • ”); } }); stringBuilder.push(“”); $(“#菜单”).append(stringBuilder.join(“”));
    在_Layout.cshtml和document.ready上的div标记中有一个加载gif,它最初是隐藏的

    我想做的是在每次单击菜单时显示div

    我该怎么做呢


    问候。

    你就不能在循环之外这样做吗

    $('#menu li').click(function()
    {
        showSpinner();
    }
    

    也许我看错了问题。

    您可以这样做,以避免为每个元素设置侦听器

    $(document).on("click", "your target query", function(){
        // Your click logic
    });
    
    因此,这将导致:

    $(document).on("click", "#menu li.someClass", function(){
        // Your click logic
    });
    
    无论您是动态添加还是删除菜单项,这都有效,只需调用一次。

    您是说这个问题吗?