2013-04-05 142 views
1

我在ASP.NET網站中使用JQuery時遇到問題。我想將常見的點擊處理程序綁定到多個類似的元素(通過ListView爲熟悉ASP.NET的人員生成)。我的假設是(作爲一個例子),如下所示使用一個類選擇: jQuery + ASP.NET:jQuery單擊事件不會觸發

$('.standard-group').click(function() { 
    alert($(this).attr("id")); 
}); 

這涉及到一系列具有這類的div:

<div class="standard-group"> 
    some content 
</div> 

<div class="standard-group"> 
    some other content 
</div> 

此外,生成內容在ContentPlaceholder中並且合併到母版頁(實際上是2個嵌套母版頁)。我試着將<script></script>標籤之間的點擊處理程序放在第二個ContentPlaceholder中,將其內容注入頁面的<head>部分,並試圖將其與主ContentPlaceholder中的內容放在一起無濟於事。最終發生的事情是生成的頁面正確加載,我可以檢查源代碼並查看該函數,但不會引發任何事件。我懷疑這與母版頁/服務器處理場景有關,但無法查明它。

有幫助嗎?

+0

可以顯示一些示例頁面(查看您最喜愛的瀏覽器的源代碼) – will 2013-04-05 06:14:20

回答

1

您的添加事件可以執行所創建的元素之前,您可以使用on()委派事件腳本記錄。

$(document).on('click', '.standard-group', function() { 
    alert($(this).attr("id")); 
}); 

委派事件

的事件處理程序僅結合到當前選擇的元素;在代碼調用.on()時,頁面上必須存在 。 要確保元素存在並且可以選擇,請在頁面上的HTML標記中的 HTML標記中對元素執行文檔就緒處理程序內的事件 綁定。如果新頁面被注入頁面, 選擇元素並附加事件處理程序,當新的HTML被放置到頁面中時,頁面中的內容爲 。或者,使用委託事件來附加處理程序事件 ,如下所述。 Reference

+0

真棒,感謝您的回答和解釋原因。它現在可以工作,但只有當我把函數放在MainContentPlaceholder中時,而不是HeadContentPlaceholder。我想我對ASP.NET頁面生命週期以及執行什麼命令的東西不夠了解。 – Katstevens 2013-04-05 06:15:59

1

委託點擊事件documenton()

$(document).on('click','.standard-group',function() { 
    alert($(this).attr("id")); 
}); 

link閱讀更多關於on()