无法以编程方式触发jQuery单击事件

如果我理解正确,要以编程方式触发附加到具有my-button的css类的对象的jQuery click事件,您应该能够执行此操作:

 $('.my-button').click(); 

由于某种原因,此代码无法触发附加到元素的click事件。 代码的$('.my-button')部分正在工作并返回一个元素。 我们知道事件处理程序附加到该元素,因为单击该元素会触发其事件处理程序的代码。 处理程序附加了以下简单代码:

 $('') .click(function() { /* code here */ }) .appendTo(parent); 

是否存在事件触发不起作用的条件? 正在访问的元素是通过jQuery小部件创建的,小部件代码通过跨域JSONP调用检索并通过eval运行(我怀疑的因素)。

你应该使用:

 $('.my-button').trigger("click"); 

结果是两个jQuery脚本被加载的情况。 通过JSONP检索的脚本包括jQuery的加载,并且jQuery对象用于附加事件处理程序。 同时,在我的同事的网页上,他已经加载了自己的jQuery。 因此,第二个jQuery对象,不知道第一个事件处理程序,无法以编程方式调用处理程序。

我不知道跨域JSONP是否与它有关,但是我必须说以编程方式触发与html链接有关的选择器上的click事件( https://stackoverflow.com/questions/4511874/cannot-programmatically-trigger-jquery-click-event/... )不起作用。

我怀疑它必须是某种浏览器策略,以阻止弹出窗口。 考虑到浏览器具有跟踪和阻止弹出窗口的机制,并且主要允许用户在新链接出现之前授权点击操作。

如果您可以通过jQuery以编程方式单击链接,重定向,弹出窗口和所有这些东西将更容易做,因此它是不可能的。 要明确一点:

Link1你不能触发它。

Link2你可以在这里触发onclick,因为它不包含href。

我有同样的问题,并改变了我将事件绑定到函数修复它的方式

  var f=function() { https://stackoverflow.com/questions/4511874/cannot-programmatically-trigger-jquery-click-event/.... } $('input.radioDomande').click(f); https://stackoverflow.com/questions/4511874/cannot-programmatically-trigger-jquery-click-event/... $(s+data.domanda[i].valore).trigger("click"); //WRONG: It won't trigger the event 

然后根据http://api.jquery.com/trigger/中的示例更改绑定

  var f=function() { https://stackoverflow.com/questions/4511874/cannot-programmatically-trigger-jquery-click-event/.... } $('input.radioDomande').bind('click', f); https://stackoverflow.com/questions/4511874/cannot-programmatically-trigger-jquery-click-event/... $(s+data.domanda[i].valore).trigger("click"); //IT DOES TRIGGER THE EVENT 

奇。 你试过.trigger('click') ? 从理论上讲,它们应该是相同的(现在查看jQuery代码以找出答案)。 编辑:看起来.click()只是.trigger(’click’)的代理,所以它可能无济于事。

对于调试,请尝试在加载窗口小部件的页面上绑定实时单击事件。

我最好的猜测是在您尝试触发事件后绑定处理程序。

尝试:

 var myButtons = $(') .click(function() { /* code here */ }) .appendTo(parent); myButtons.click(); 

或使用原始代码 – 在JSONP请求的回调中触发事件。

如果它没有调用事件,特别是正确记录的自定义,则在分配事件处理程序后,可能会再次加载jQuery库。

使用以下方法检查代码

 jQuery (document).ready (function () { // Test your code here }); 

回到dom并做到:

$( “A按钮”)[0]。点击();