jquery 的click不同于原生javascript的click

起因是做一个ASP.NET 页,原来用js 触发服务器端按钮,无问题。
后来为了美观,将服务器端按钮换成了linkbutton,却触发不起了。
经研究,原来服务器端button在前台生成的submit,直接提交,但是linkbutton生成的是a href="javascsript_postback(",
js 的脚本  $("#linkbuttonclientid").click()  触发不了 linkbutton的href中的"javascsript_postback("。

在简单的测试页面,直接将$("#linkbuttonclientid").click(),换成 _postback(‘inkbuttonclientid’,‘’),可以如愿工作。
但是,在真实的工作环境中,却又不行,探查后发现,原来 真实工作环境中的linkbutton在用户控件中,生成的clientid是id="ProjectFilesManager1_ButtonGotoParent"和  href=javascript:_postback('ProjectFilesManager1$ButtonGotoParent'
中的postback的名字不一致,是把美元符$换成了下划线_,所以手动js调用_postback的时候,第一个eventTarget 参数,按照服务端控件生成的写就可以了。

事情可以解决,但是比较丑陋,我就想能不能写脚本直接触发a 的href,就写鼠标点击一样呢,
后来试了不用jquery的click,直接用 triggerHandler(click,不行,又试了trigger(click,也不行。
最后尝试不同的关键字搜索,终于在Stackoverflow找到了答案。

https://stackoverflow.com/questions/7999806/how-to-trigger-click-event-on-href-element
解释下就是,jquery的click 只会触发click事件处理程序,完全忽略href,而原生的js click却是直接 象鼠标左键点击一样。
所以可以用 document.getelementById("clientid").click(), 或者用jquery语法 的原生 js 来调用 $("#clientid")[0].click().


posted @ 2021-03-11 11:18  wzy77cn  阅读(186)  评论(0)    收藏  举报