使用 jQuery 模拟多次按钮点击并触发服务器端事件

最近,我正在开发一个项目,其中我必须使用 jQuery 模拟按钮单击,并使用 ASP.NET 服务器端事件模拟它。
我已经这样做了很长时间,我几乎打破了它。
我记得那是2 01 8 年,项目是在一个叫‘金融数据分析平台’的系统中进行的。

从一开始,我们就在客户端使用jQuery来模拟点击。
当时我写了一个脚本,用了$(function(){});确保在运行此脚本之前加载页面。
然后,我将单击事件绑定到每个按钮,如下所示:
javascript $('btnOne').click(function(){ 하나(); $('btnTwo').click(); $('btnThree').click(); });
$('btnTwo').click(function(){ 둘(); });
$('btnThree').click(function(){ 세(); });
现在客户端逻辑已经写好了,我们需要处理服务器端。
在 ASP.NET 页面中,我配置了按钮的属性,设置 OnClientClick 来调用客户端函数,然后使用 OnClick 来处理服务器端事件。
页面代码如下:
<input type="button" id="btnThree" value="3 " onclick=3 ();"/>
然后在服务器端我们使用C来处理这些事件。
我记得写过这样的代码:
csharp protected void btnOne_Click(对象发送者,EventArgs e) { ClientScript.RegisterStartupScript(this.GetType(), "Key1 ", "alert('ServerSideOne');", true); }
protected void btnTwo_Click(对象发送者, EventArgs e) { ClientScript.RegisterStartupScript(this.GetType(), "Key2 ", "alert('ServerSideTwo');", true); }
这就是我们陷入确保方法签名与 OnClick 属性匹配的大坑的地方。
否则服务器端事件将不会被触发。

我还记得最后在页面顶部引入了一个 jQuery CDN 链接,以使 jQuery 库正常工作。

[xss_clean][xss_clean]
做完这件事后,我心里踏实了。
但说实话,这个过程有很多曲折。
例如,对于动态创建的按钮,您需要记住将事件绑定到异步回调。
还存在客户端和服务器之间的事件排序问题。
这必须首先在客户端完成,然后在服务器端完成。

总之,这个项目让我对 jQuery 和 ASP.NET 事件处理有了更深入的了解。
虽然很累,但我也觉得很有成就感。
如果你遇到类似的问题,可以参考我的经验。

jQuery中的on和click的区别

JavaScript/jQuery中为多个列表项添加点击事件的正确方法

哦,就是这个事情。
十年前,当我第一次学习 jQuery 时,我确实遇到了很多陷阱。
我来说说我遇到的情况吧。

公司建网站的时候,列表项有几十个,点击每一项都会弹出一些东西。
你一开始是怎么做到的?我直接向第一个列表项添加了一个 ID,称为 item1 那么第二个、第三个也叫item1 ...想想看,浏览器也会看吧?不能有两个身份证!结果呢?只有第一点能有反应,后面二十点就完全没有作用了。
我真的很生气。
经过调试很久,终于发现是ID重复的问题。

后来我意识到,不要用你的ID来做这种事。
使用类来代替。
您会看到
  • 项目 1 、
  • 项目 2 、...、
  • 项目 N 。
    这太棒了,您可以使用 clickable 一百次而不会出现任何问题。
    然后用$('.clickable').click(function() {...}),嘿嘿,任意点击都可以。
    就这样,问题解决了。

    后来这是一个项目。
    该列表是在后端添加的,而不是从一开始就进行硬编码。
    我一按照上面的方法,链接事件后,发现新添加的无法点击!还得再学习一下。
    后来查资料,了解到“事件委托”。
    想一想,你刚刚添加到后端的 还没有附加事件,你怎么能点击它呢?你必须把它和父亲联系起来。
    例如,如果 是爸爸,则 $('ul').click('.clickable', function() {...})。
    这样,每当添加
  • 时,当它被点击时,事件就可以从它传递给 ,然后 就会勾选“哦,你是可点击的,那就执行这个函数”。
    我记得当时测试了一下,最后加了几十个 。
    大家都一一说对了,我就放心了。

    就这样,我总结了两点:第一,不要一群兄弟用同一个ID,用class。
    其次,如果稍后添加某些内容,请使用父级的事件委托。
    简单吧?这就是我来到这里的经历,陷入陷阱的经历。