2017-08-28 53 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