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

时间:2013-08-19 07:26:59

标签: jquery

我有一个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(''));

_Layout.cshtml和document.ready上的div标签中有一个加载器gif。它最初是隐藏的。

我要做的是在每个菜单上显示div。

我该如何去做?

问候。

2 个答案:

答案 0 :(得分:0)

你不能在循环外做这件事吗?

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

也许我正在读错的问题。

答案 1 :(得分:0)

你可以这样做,以避免为每个元素设置监听器。

$(document).on("click", "your target query", function(){
    // Your click logic
});

这样会导致:

$(document).on("click", "#menu li.someClass", function(){
    // Your click logic
});

这可以动态地添加或删除菜单项,只需要调用一次。