2013-02-17 40 views
1

我希望能夠訪問在代碼隱藏中創建的jQuery中的標籤控件。使用jQuery查找在代碼隱藏中創建的控件

我已經添加控件到我的網頁中隱藏代碼,像這樣

 Label L = new Label(); 
     L.ID = "txt" + i; 
     L.Text = dr["category_name"].ToString(); 
     L.CssClass = "heading"; 
     divCat.Controls.Add(L); 

是否有可能找到通過ID或jQuery的另一種選擇這些控件? 下面給出了一個錯誤,說沒有這樣的控制:

$(function() { 
    $(".hoverlabel").hover(function() { 
    $("#<%=txt1.ClientID %>").show(); 
    }); 

}); 
+0

檢查你的源代碼,看看有什麼是你的標籤ID,在客戶端,並查看您的<%=%>片段的結果。 – 2013-02-17 04:04:09

+0

可能更容易使用遍歷,而不用擔心使用服務器代碼來填充選擇器... show some source html – charlietfl 2013-02-17 04:05:23

回答

3

我不知道它會不會起作用。
您可以利用ClientIDMode="Static" 例如。

<asp:TextBox ID="txtEcho2" runat="server" ClientIDMode="Static" /> 

在你的情況

Label L = new Label(); 
    L.ID = "txt" + i; 
    L.Text = dr["category_name"].ToString(); 
    L.CssClass = "heading"; 
    divCat.Controls.Add(L); 
    L.ClientIDMode= ClientIDMode.Static; 

和你的jQuery函數

$(function() { 
     $(".hoverlabel").hover(function() { 
     $("#txt1").show(); 
     }); 
    }); 
+0

這種正確的語法是L.ClientIDMode = ClientIDMode.Static; 更改爲此時,此作品非常感謝! – AzaRoth91 2013-02-17 04:28:05

+0

@ AzaRoth91感謝您的糾正。而且你總是受歡迎。 – 2013-02-17 06:25:51

0

你不能做你想要做的..這樣的東西。

您試圖在代碼中使用字符串作爲對象。以這個正常的C#爲例:

string myString = "HelloString"; 
string lowerString = HelloString.ToLower(); // This won't work.. 

這相當於你正在嘗試做什麼。

解決方法是使用FindControl

$(function() { 
    $(".hoverlabel").hover(function() { 
     $("#<%= FindControl("txt1").ClientID %>").show(); 
    }); 
}); 

這將找到根據您動態分配的ID控制。

0

假設後臺代碼實際上生成一個HTML <label>,您的jQuery的可能是這樣的:

$(function() { 
    $(".hoverlabel").hover(function() { 
    $("label.heading").show(); 
    }); 
}); 
0

只需指定一個額外的「識別CSS類」:

var L = new Label(); 
L.ID = "txt" + i; 
L.Text = dr["category_name"].ToString(); 
L.CssClass = "heading myLabel"; // Set multiple classes separated by spaces 
divCat.Controls.Add(L); 

然後你就可以用這個jQuery的聲明讓你控制:

$(function() { 
    $(".hoverlabel").hover(function() { 
    $(".myLabel").show(); 
    }); 
}); 
相關問題