2015-03-05 1 views
0

Я не могу получить успешный пожар событий js для элементов, которые находятся в частичных представлениях. Вероятно, это связано с тем, как загружаются частичные представления, поэтому элементы могут не находиться в DOM при запуске document.ready.MVC - события Javascript на элементах с частичным представлением

Нажатие на кнопку только скрывает элемент, который находится на главной странице (menu-panel2).

Какой подход к этому мне не хватает?

Главная Html:

<body> 
    <script src="@Url.Content("~/Scripts/jquery.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/main.js")" type="text/javascript"></script> 
    <div id="upper-menu-container"> 
    @{Html.RenderPartial("_Menu");} 
    </div> 
    <div id="upper-menu-container2"> 
    @{Html.RenderPartial("_Menu");} 
    </div> 
    <div id="header-wrapper"></div> 
    <div id="menu-panel2"> 
    Hide me - Hide me 
    </div> 
    <div id="content"> 
    <input type="button" id="testbutton" value="click me" /> 
    @RenderBody() 
    </div> 
</body> 
</html> 

Main.js:

$(document).ready(function() { 
    $("#testbutton").click(function() { 
    $("#menu-panel").toggle(); 
    $("#menu-panel2").toggle(); 

    }); 
}); 

Частичный вид:

<div id="menu-panel"> 
    Hide me 
</div> 
+0

вы вызываете '@ {Html.RenderPartial (" _ Menu ");}' дважды, поэтому у вас есть дубликат ID – wf4

+0

ахх ... вы тоже меня избили. – wf4

ответ

0

Аааа ... Я просто нашел проблему, которая была вызвана наличием два идентичных частичного просмотра, которые, вероятно, загрузили несколько элементов с одинаковым идентификатором в DOM.

Корпус закрыт!

0

Попробуйте поставить эту строку:

<script src="@Url.Content("~/Scripts/main.js")" type="text/javascript"></script> 

в конце файла.

У меня есть несколько шаблонов, которые просто работают так.