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

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

如果我理解正确,要以编程方式触发附加到css类为
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()模拟了一个事件激活,并带有一个合成的事件对象,但它并不能完美地复制一个自然发生的事件。”试图弄清楚这到底意味着什么,但可能是相关的。是的,我正试图在
  • 中的img上调用.trigger('click'),我得到了一个错误:“TypeError:Object#没有方法‘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
    });