2011-04-15 20 views
1

Hello StakOverflowians!想知道是否有人可以帮助这个。JQuery对ASP.NET AJAX更新面板中动态创建的控件的影响

我在AJAX更新面板中有一个动态创建的标签。在单击标签时,我试图(暂时)使用JQuery显示警报。 问题是,当动态生成标记时不会显示警报,但是,如果我在.aspx中静态声明标记,那么它将起作用。 下面是代码:

protected void Button_Click(object sender, EventArgs e){ 
     HtmlAnchor htmlA = new HtmlAnchor(); 
     htmlA.ID = "hidden_link"; 
     PlaceHolder1.Controls.Add(htmlA); 

     string javaScriptFunction = 
      "jQuery(document).ready(function() {" + 
       "$(function() {" + 
        "$(\"a[id$='hidden_link']\").click(function() {" + 
         "alert('Alert: Hello from jQuery!');" + 
        "});" + 
       "});" + 
      "}"; 

     ScriptManager.RegisterStartupScript(this, 
              this.GetType(), 
              "myScript", 
              javaScriptFunction, 
              true); 
    } 

和的.aspx,我有:

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 
    </ContentTemplate> 
</asp:UpdatePanel> 

<script language="javascript" type="text/javascript"> 
    function pageLoad() { 
     jQuery(document).ready(function() { 
     $("a[id$='hidden_link']").click(function() { 
       alert("Alert: Hello from jQuery!"); 
      }); 
     }); 
    } 
</script> 

我应该怎么做才能警报的PLACEHOLDER1内动态创建的控件的工作? 任何帮助将不胜感激。

感谢, 阿里

+0

当你说创造了“动态”是由客户端或服务器端脚本动态创建? – clamchoda 2011-04-15 15:52:14

+0

服务器端脚本 – user179490 2011-04-15 15:55:21

+0

**更新**进一步阐述:我基本上从weblogs.asp.net/hajan/archive/2010/10/07/...开始。我想要做的唯一不同的/额外的事情是点击该按钮,我想创建一个动态的标签并调用它的点击事件。我正在使用代码隐藏方式在脚本的方法3中注册脚本。 – user179490 2011-04-17 14:57:13

回答

1

如果你按一下按钮是一个异步后跑回来,你不是真正重新加载页面。所以$(document).ready()方法不会被调用。

要解决您的问题,请删除呼叫。

string javaScriptFunction = "$(\"a[id$='hidden_link']\").click(function() { alert('Alert: Hello from jQuery!'); });"; 

或者,你可能会发现jQuery的live()功能更适合于连接处理程序元素动态创建

相关问题