웹 사용자 컨트롤에 일부 JavaScript가 있고 페이지에 해당 컨트롤의 인스턴스 두 개를 인스턴스화합니다. 컨트롤은 도움말 텍스트를 표시하기 만하면 열거 나 닫을 수 있도록 토글해야합니다.Asp.Net 웹 사용자 컨트롤의 JQuery 스크립트가 한 번 이상 실행됩니다.
document.ready 함수는 두 번 실행된다는 예상대로 작동합니다. 그러나 두 컨트롤 중 하나를 클릭하면 스크립트가 두 번 실행되므로 컨트롤이 열립니다.
클릭 한 컨트롤에 대해 스크립트가 한 번만 실행되도록하려면 어떻게해야합니까? (@UmairP에 의해 지적)
<div class="helpControlHolder">
<div class="expandableHeading">Show (Hide) </div>
<div class="expandableContent commentsTable" >
<ul id="ulComments" runat="server"></ul>
</div>
</div>
<script type="text/javascript">
function slideToggle(e, ui) {
debugger;
//find the right control to slideToggle
var ct = e.currentTarget;
var controlHolder = ct.parentNode; //up the dom one element
$(controlHolder).find(".expandableContent").slideToggle(500); //back down the dom to the element we want to animate
}
$(document).ready(function() {
//find the right control to hide
var pare = $('.helpControlHolder');
pare.find(".expandableContent").hide();
pare.find(".expandableHeading").click(function (e, ui) {
e.preventDefault();
slideToggle(e, ui);
});
});
</script>
나는 문서 ready'이'클릭() 두 번 호출되는'핸들러는 당신이 문제 – Satpal
에 자바 스크립트 코드를 넣어 당신을 제안합니다 클래스 선택기를 사용하여이 2 개의 요소가 페이지에서 발견됨 서버에서 컨테이너를 실행하고 ID를 부여하고 '# <%% Div_Id.ClientID %>'를 사용하도록 제안 할 것임 –
의 원인이되는 두 바인딩'있기 때문에 seprate 파일 –