在asp:按钮上的jQuery Click事件

我有一个服务器端按钮

 

我想使用其ID附加jQuery Click事件,而不是使用替代类属性方式。

我试图将click事件附加为:

 $("#btnSummary").click(function() { alert("1"); }); 

但是,它的click事件不会被触发。 另外,我也试过$("id[$btnSummary]")

有没有办法在没有按钮上的class属性的情况下使用jQuery在asp:button上附加click事件?

您可以在此处找到一些选项

如何阻止ASP.NET更改id以使用jQuery

编辑:

在阅读了对其他答案的评论之后,听起来你需要在ASP.NET AJAX的pageLoad中绑定onclick事件处理程序,以便它在每次回发时绑定,包括异步回发。 另一方面,$(document).ready()仅在初始页面加载时绑定一次

 function pageLoad(sender, args) { $("#<%=btnSummary.ClientID %>").click(function() { alert("1"); }); } 

Dave Ward写了一篇关于pageLoad和$(document).ready()之间差异的好文章 。

将ClientIDMode =“Static”添加到您的asp:按钮,如下所示:

  

这将使ID保持不变。 它禁用此控件的自动生成的名称。

以下是此参考: http : //msdn.microsoft.com/en-us/library/system.web.ui.control.clientid.aspx

  1. 运行站点时,检查id属性是否在html源中。
  2. 您是否在文档就绪function中具有单击function?

 $(document).ready(function() { // put all your jQuery goodness in here. }); 

编辑:

由于它的服务器端控件和ID发生了变化,因此您需要使用变量动态更新每个页面加载的javascript。

ASP.NET为客户端事物生成一个UniqueID,您可以使用它来绑定事件。 该ID是根据ControlCollection中的Control的位置和不同的INamingContainers生成的,它很难看,你无法猜到它……

在页面的某处添加此类代码以挂接该按钮。

  

我现在对此感到困惑。 让我解释:

 1. I added a button on the page: 
2. Then I added a JavaScript and jQuery: 3. The generated html is this:

现在,我没有看到ASP.NET(asp.net 3.5)改变了ID。 为什么我会看到不同的行为?

顺便说一句。 当我按下按钮时,这确实有效!

谢谢。

将选择器分配给课程对我有用。

   

在使用updatepanels时使用pageLoad,因为document.ready只在页面初始化时运行一次,并且在部分回发上失去绑定。 PageLoad每次都会运行,因此会重新绑定每个部分回发。

我有同样的问题,这适合我

  

它增加了返回false,似乎有所不同。 希望这可以帮助。

问候

彼得

ASP.NET为您添加了id(例如:id“ selectButton ”变为

 "ctl00_middleContent_gvPeople_ctl04_selectButton"); 

使用jquery语法搜索不会更改的id部分。

 $("[id='_selectButton']") 

请使用以下语法:$(“[id * = Button1]”)来引用任何asp控件

你到达那里。 我猜有两种方法,

  1. 从浏览器检查控件并查看控件ID,看起来像ct1000_ btnSummary 。 在jQuery的Click事件上使用此ID。

替换代码

  $("#ctl00_contentplcedholder_btnSummary").click(function() { alert("1"); }); 
  1. 接下来很简单,只需向控件添加一个属性ClientIdMode =“static”,然后使用它将触发的实际Jquery点击事件。