0

我有一个 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。

我该怎么做呢?

问候。

4

2 回答 2

0

你不能在循环之外做这个吗?

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

也许我读错了这个问题。

于 2013-08-19T07:34:05.377 回答
0

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

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

所以这将导致:

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

这将在您动态添加或删除菜单项时起作用,并且只需要调用一次。

于 2013-08-19T07:39:07.070 回答