如果我理解正确,要以编程方式触发附加到css类为my-button
的对象的jQuery click事件,您应该能够执行此操作:
$('.my-button').click();
由于某种原因,此代码无法触发附加到元素的click事件。代码的$('.my-button')
部分正在工作并返回一个元素。我们知道事件处理程序附加到该元素,因为单击该元素会触发其事件处理程序的代码。处理程序附加了以下简单代码:
$('<a class="my-button"/>')
.click(function() { /* code here */ })
.appendTo(parent);
是否存在事件触发不起作用的情况?正在访问的元素是通过jQuery小部件创建的,小部件代码通过跨域JSONP调用检索并运行eval
(我怀疑的因素)。
答案 0 :(得分:5)
您应该使用:
$('.my-button').trigger("click");
答案 1 :(得分:5)
原来是加载了两个jQuery脚本的情况。通过JSONP检索的脚本包括jQuery的加载,并且jQuery对象用于附加事件处理程序。同时,在我的同事的网页上,他已经加载了自己的jQuery。因此,第二个jQuery对象,不知道第一个事件处理程序,无法以编程方式调用处理程序。
答案 2 :(得分:3)
我不知道跨域JSONP是否与它有关,但是我必须说以编程方式触发与html链接(<a href='...'>...</a>
)有关的选择器上的click事件工作。
我怀疑它必须是某种浏览器策略,以阻止弹出窗口。考虑到浏览器具有跟踪和阻止弹出窗口的机制,并且主要允许用户在新链接出现之前授权点击操作。
如果你可以通过jQuery以编程方式单击链接,重定向,弹出窗口和所有这些东西会更容易,因此它是不可能的。只是要明确:
<a class='test' href='http://www.example.com'>Link1<a/>
你不能触发它。
<a class='test2'>Link2</a>
你可以在这里触发onclick,因为它不包含href。
答案 3 :(得分:2)
我遇到了同样的问题并改变了我将事件绑定到函数修复它的方式
var f=function() { .... }
$('input.radioDomande').click(f);
...
$(s+data.domanda[i].valore).trigger("click");
//WRONG: It won't trigger the event
然后根据http://api.jquery.com/trigger/
中的示例更改了绑定 var f=function() { .... }
$('input.radioDomande').bind('click', f);
...
$(s+data.domanda[i].valore).trigger("click");
//IT DOES TRIGGER THE EVENT
答案 4 :(得分:1)
奇。你试过.trigger('click')
吗?从理论上讲,它们应该是相同的(现在查看jQuery代码以找出答案)。 编辑:看起来.click()只是.trigger('click')的代理,所以它可能无济于事。
要进行调试,请尝试在加载窗口小部件的页面上绑定实时点击事件。
答案 5 :(得分:1)
我最好的猜测是在您尝试触发事件后绑定处理程序。
尝试:
var myButtons = $('<a class="my-button"/>)
.click(function() { /* code here */ })
.appendTo(parent);
myButtons.click();
或使用原始代码 - 在JSONP请求的回调中触发事件。
答案 6 :(得分:0)
如果它没有回忆起正确记录的事件,特别是自定义事件,则在分配事件处理程序后,很可能会再次加载jQuery库。
使用以下方法检查您的代码:
jQuery (document).ready (function () {
// Test your code here
});
答案 7 :(得分:0)
我也遇到过这个问题,但我没有多个 jQuery。
阅读这里的答案,我意识到这是因为执行顺序。在调用点击的函数之后,我绑定了事件处理程序几行。
这是一个 DOH!瞬间...
答案 8 :(得分:-1)
回到dom,然后执行:
$( “A按钮”)[0]。点击();