无法以编程方式触发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]。点击();