2017-08-28 51 views
0

我創建了一些動態的文本框和標籤,並試圖通過JQuery隱藏/顯示它們,但無法使JQuery正常工作。我究竟做錯了什麼?使用JQuery隱藏動態創建的標籤

下面的代碼背後:

TableCell td4 = new TableCell(); 

Label l2 = new Label(); 

l2.ID = "lbSell" + dp.dSellAutoID.ToString(); 
l2.Text = Math.Round(Convert.ToDecimal(dp.dSellPrice), 2).ToString(); 
l2.Visible = false; 
td4.Controls.Add(l2); 

TextBox tb1 = new TextBox(); 

tb1.ID = "tbSell" + dp.dSellAutoID.ToString(); 
tb1.Width = 50; 
tb1.Text = Math.Round(Convert.ToDecimal(dp.dSellPrice), 2).ToString(); 
td4.Controls.Add(tb1); 
tr.Cells.Add(td4); 

而這裏的JS:

function editRow(rowID) { 
    //alert(rowID); 
    $('#' + 'lbSell' + rowID).show(); 
    $('#' + 'tbSell' + rowID).hide(); 
} 
+0

告訴我們在哪兒,你叫'editRow' –

+0

editRow通過動態創建的標籤叫,併發射,並給予正確的rowID即: l1.Attributes.Add(「OnClick」,「editRow(」+ dp.dSellAutoID.ToString()+「)」); – Milnelli

+0

檢查您的HTML並檢查ID的值是否有。 –

回答

1

您在使用母版頁?在這種情況下,頁面渲染時ID會發生變化。爲了防止這種情況,你可以添加到ClientIDMode="Static"頁面指令

<%@ Page Title="" Language="C#" ClientIDMode="Static" MasterPageFile="~/epinet.master" %> 

請參閱:https://stackoverflow.com/a/5494142/5746368

+0

是的,使用母版頁..使用ClientIDMode =「Static」方法有什麼缺點嗎?或者我可以指望擁有位於masterpage結構下的控件的前綴MAIN嗎? – Milnelli

+0

我在設置ClientIDMode =「static」時沒有發現任何缺陷。我更喜歡這樣做,以便其他人可以理解/調試我的Javascript/jQuery而不會感到困惑。 – jim1427

+0

有關ClientIDMode屬性的更多詳細信息,您可能還會看到https://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx – jim1427