Javascript 无法以编程方式触发jQuery单击事件
如果我理解正确,要以编程方式触发附加到css类为Javascript 无法以编程方式触发jQuery单击事件,javascript,cross-domain,eval,jquery,Javascript,Cross Domain,Eval,Jquery,如果我理解正确,要以编程方式触发附加到css类为my button的对象的jQuery click事件,您应该能够执行以下操作: $('.my-button').click(); 由于某些原因,此代码无法触发附加到元素的单击事件。$('.my button')部分代码正在工作并返回一个元素。我们知道事件处理程序附加到该元素,因为单击该元素会触发其事件处理程序的代码。处理程序附带以下简单代码: $('<a class="my-button"/>') .click(functi
my button
的对象的jQuery click事件,您应该能够执行以下操作:
$('.my-button').click();
由于某些原因,此代码无法触发附加到元素的单击事件。$('.my button')
部分代码正在工作并返回一个元素。我们知道事件处理程序附加到该元素,因为单击该元素会触发其事件处理程序的代码。处理程序附带以下简单代码:
$('<a class="my-button"/>')
.click(function() { /* code here */ })
.appendTo(parent);
$(“”)
。单击(函数(){/*此处编码*/})
.附属于(父母);
是否存在事件触发不起作用的情况?被访问的元素是通过jQuery小部件创建的,小部件代码是通过跨域JSONP调用检索的,并通过
eval
(我怀疑的因素)运行的。您是否尝试过.trigger('click')
?理论上,它们应该是相同的(现在查看jQuery代码以找到答案)Edit:它出现了。click()只是.trigger('click')的一个代理,所以它可能不会有帮助。
要进行调试,请尝试在加载小部件的页面上绑定live click事件。您应该使用:
$('.my-button').trigger("click");
我的最佳猜测是,在您尝试触发事件后,处理程序已绑定 尝试:
var myButtons=$(')
。单击(函数(){/*此处编码*/})
.附属于(父母);
我的按钮。单击();
或者使用原始代码—在JSONP请求的回调中触发事件。结果是加载了两个jQuery脚本。通过JSONP检索的脚本包括jQuery的加载,该jQuery对象用于附加事件处理程序。与此同时,在我同事的网页上,他加载了自己的jQuery。因此,第二个jQuery对象不知道第一个jQuery对象的事件处理程序,无法通过编程方式调用处理程序。我也遇到了同样的问题,通过更改将事件绑定到函数的方式,解决了这个问题
var f=function() { .... }
$('input.radioDomande').click(f);
...
$(s+data.domanda[i].valore).trigger("click");
//WRONG: It won't trigger the event
然后根据中的示例更改绑定
我不知道跨域JSONP是否与此有关,但是我必须说,以编程方式触发与html链接(
)有关的选择器上的单击事件不起作用
我怀疑这一定是某种浏览器策略,以阻止弹出窗口。考虑到浏览器有一个机制来跟踪和阻止弹出窗口,并且大多数用户允许用户在新链接出现之前授权点击操作。
如果您可以通过jQuery、重定向、弹出窗口等编程方式单击链接,那么这将更容易实现,因此不可能实现。我想说清楚:
您可以在此处触发onclick,因为它不包含href 返回dom并使用以下工具进行操作:
$(“阿布顿”)[0]。单击() 如果它不调用正确记录的事件,特别是自定义事件,则在分配事件处理程序后,很可能会再次加载jQuery库 使用以下命令检查代码:
jQuery (document).ready (function () {
// Test your code here
});
我也遇到了这个问题,但我没有多个jQuery 通过阅读这里的答案,我意识到这是因为执行的顺序。在调用click函数之后,我绑定了事件处理程序几行
这真是一个笑话!片刻…我们尝试使用
.trigger('click')
;那也没用。无论如何,它们都会做同样的事情。尝试在加载小部件的页面上绑定一个.live('click',…)
事件,看看加载的小部件是否有问题,然后评估“d”。事件处理程序正在运行。点击链接就可以了。通过编程触发它不会。Docs说“尽管.trigger()模拟了一个事件激活,并带有一个合成的事件对象,但它并不能完美地复制一个自然发生的事件。”试图弄清楚这到底意味着什么,但可能是相关的。是的,我正试图在a
的click
事件中。@Jacob:它们是彼此的后代吗?首先,你的附加代码的处理程序有语法错误……感谢你指出键入错误,@Eric。我记得在jQuery 1.4.3Thanks上遇到过类似的问题。这就是帮助我解决问题的办法。我也在做同样的过程,一个是触发一个AJAX调用,这个调用很有效,在另一个页面上,我不需要AJAX,而是将它设置为常规链接。那没用。为了让我的工作并重新加载整个页面,我必须将document.location设置为链接的href属性。哦,天哪!我也在为同样的问题挣扎。在我的例子中,我也有多个jQuery实例。
var f=function() { .... }
$('input.radioDomande').bind('click', f);
...
$(s+data.domanda[i].valore).trigger("click");
//IT DOES TRIGGER THE EVENT
jQuery (document).ready (function () {
// Test your code here
});