2011-04-23 48 views
2

我有一個用戶控件內的按鈕。某些事件將usercontrol加載(添加)到佔位符 。 問題是這個按鈕的簡單的jquery點擊事件不起作用。 我錯過了什麼?選擇器應該是什麼樣子?jquery不與usercontrol工作

$('#mybutton').click(function() { alert("..."); }); 

或者我必須遍歷它嗎?

注:我設法執行的用戶控件代碼隱藏。

非常感謝。

+0

當你通常將一些控件放在佔位符下時,它的ID更改爲'PlaceHolderID_YourConrolID',你確定按鈕的ID仍然是'mybutton'。 – 2011-04-23 10:04:53

+0

試試這個:'$('#<%= mybutton.ClientID%>')。click(function(){alert(「...」);});' – 2011-04-23 10:07:11

+0

沒有工作。有什麼建議麼 ? – Roobah 2011-04-23 11:05:41

回答

0

您需要在客戶端來檢查該ID是一樣的myButton的? ASP.NET用屬性runat="server"替換所有用戶控件的客戶端ID。

您可以查看源代碼,看看修改後的ID。

0

在ASPX頁面,當您將佔位裏面的按鈕。客戶端ID自動更改。所以你必須用選擇器來使用Jquery End。 http://api.jquery.com/attribute-ends-with-selector/

您使用$符號用來查找動態控制ID。

$("input[id$=mybutton]").click(function() { alert("..."); }); 
+0

它沒有工作。 DOM樹是button> usercontrol> placeholder>頁面。 – Roobah 2011-04-23 10:27:39

+0

右鍵點擊頁面並轉到視圖頁面源。然後爲我提供該Button的ClientID。 – 2011-04-23 10:30:23

+0

我找不到它。該按鈕位於用戶控件內部。 – Roobah 2011-04-23 11:07:29

4

試試這個:

$('#mybutton').live("click", function() { alert("..."); }); 

由於控制#mybutton被添加到頁面後$(文件)。就緒()火災,有沒有辦法可以jQuery的處理程序添加到該對象。 live意味着,無論何時以及如何創建一個元素,它的「click」事件將被綁定到作爲第二個參數提供的函數。

BTW。 #mybutton假定元素是標準html對象,或者是在render將ID和NAME保留爲mybutton之後的ASP控件。如果不是,請將$("#mybutton")替換爲$("#<%= mybutton.ClientID %>")或嘗試將ASP控件的ClientIDMode設置爲靜態,或者按類名訪問控件。

編輯:

去附加事件處理程序的前建議的方法是

$('#mybutton').on("click", function() { alert("..."); }); 
+0

嘿,謝謝!我試了一切,沒有任何工作,直到我改變一個bind()live()。 – Narayana 2012-04-10 19:56:28

+0

作爲一個經驗法則:如果控件在HTML標記中靜態聲明並且不會在回發中重繪,請使用Bind,對動態添加的控件使用Live或在回傳時重新填充 – Dimitri 2012-04-11 12:58:14

0

我有過類似的問題,發現這個解決方案:放置鏈接到jQuery的文件和一個空腳本標記

<script type="text/javascript" src="../scripts/jquery-1.10.1.min.js" /> 
<script type="text/javascript" language="javascript"></script> 

,然後在用戶控制:使用這樣的控制的頁面(內標頭標記的)上本身(沒有標題標籤):

<script type="text/javascript" language="javascript"> 
$(document).ready(function() { 
    //your function here. 
}); 
</script> 

希望這會有所幫助!