2013-08-19 7 views
0

У меня есть приложение MVC, в котором главное меню динамически создавать так:Динамическое добавление обработчика щелчка в JQuery

$.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('')); 

Там в загрузчик GIF в сНу теге на _Layout.cshtml и document.ready он скрыт изначально.

То, что я пытаюсь сделать, это показать, что div на каждом щелчке меню.

Как мне это сделать?

С уважением.

+2

Вы имеете в виду этот вопрос? http://stackoverflow.com/questions/16893043/jquery-click-event-not-working-after-adding-class-using-jquery –

ответ

0

Вы можете сделать это, чтобы избежать установки слушателя для каждого элемента.

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

Так что приведет к:

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

Это будет работать кастрированный баран добавлять или удалять пункты меню динамически, и нужно только назвать один раз.

0

Разве вы не можете сделать это за пределами цикла?

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

Возможно, я читаю вопрос неправильно.