我在Web用戶控件上有一些JavaScript,並在頁面上實例化該控件的兩個實例。該控件只是顯示一些幫助文本,並應切換到打開或關閉。Asp.Net Web用戶控件上的JQuery腳本多執行一次
document.ready函數按預期運行,因爲它運行兩次。然而,當我點擊任何一個控制腳本運行兩次,因此控制打開然後關閉。
如何確保腳本僅運行一次單擊的控件。
<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>
我會建議你把JavaScript代碼在seprate文件 – Satpal
由於'文件ready'被調用了兩次,你的'點擊()'處理程序綁定的兩倍,這是造成問題的 –
你是使用類選擇器這意味着2元素在頁面上我會建議你讓容器在服務器上運行,給一個Id和在選擇器中使用'#<%= Div_Id.ClientID%>' –