C# 将OnClick事件附加到现有JavaScript按钮

C# 将OnClick事件附加到现有JavaScript按钮,c#,javascript,asp.net,webforms,C#,Javascript,Asp.net,Webforms,我希望在服务器端按钮的onclick中添加一些JavaScript。大概是 //b is a button b.Attributes.Add("onclick", "my.js.here();"); 但在不消除任何可能存在的的情况下,单击该按钮上的事件 编辑:上面表示一个代码隐藏文件(C#),它试图向客户端按钮添加一个额外的事件侦听器,该按钮可能已经有一个onclick事件。为什么不使用按钮元素ID,然后为onclick执行一个事件处理程序呢 var myBtn = document.ge

我希望在服务器端按钮的
onclick
中添加一些JavaScript。大概是

 //b is a button
 b.Attributes.Add("onclick", "my.js.here();");
但在不消除任何可能存在的
的情况下,单击该按钮上的
事件


编辑:上面表示一个代码隐藏文件(C#),它试图向客户端按钮添加一个额外的事件侦听器,该按钮可能已经有一个
onclick
事件。

为什么不使用按钮元素ID,然后为onclick执行一个事件处理程序呢

var myBtn = document.getElementById("buttonEl");
myBtn.onclick = function () { 

     alert("Button has been clicked");

}

我通常会尽量避免使用属性订阅JavaScript事件。取而代之的是,我会选择一个或更多的抽象(比如jQuery的.click处理程序)。例如,继续jQuery,您可以在ASPX页面中使用以下JavaScript:

$('#yourButtonId').click(function() {
      my.js.here();
 });
这有几个优点,其中主要的优点是您可以添加处理程序,而无需对已经存在的处理程序进行踩踏

您可以尝试做一些事情,比如获取属性的现有值,然后用
my.js.here()在其前面加上前缀,但这似乎不是理想的解决方案。

使用以下方法

$("#AuthorityLevel").find("a").attr('onclick','my.js.here();');

只有一个
onclick
事件,并且只有一位代码可以在该事件上执行。也许您可以加入父对象并获得气泡上升事件,但这并不适用于每个对象/调用。可能是您正在尝试在codebehind中注册javascript单击事件吗?是的,codebehind。很抱歉给你带来了困惑。我修改了问题以澄清问题。好吧,在代码隐藏中设置点击事件并不困难。但是你仍然没有保留现有点击的选择。每次点击只有一个任务。我相信我写的这个答案会适合你。这段代码如何防止覆盖现有的onclick事件?为什么不使用on事件处理程序并将onclick事件放入单个事件处理程序中?您的意思是从服务器端调用此JavaScript吗?