【问题标题】:Why trigger click not work?为什么触发点击不起作用?
【发布时间】:2013-06-12 02:57:03
【问题描述】:

美好的一天。

我有代码:

<a class="fancybox iframe" href="http://google.com" id="online_form_a">test</a>

<script>
$(document).ready(function() {
    // add the fancy box click handler here
    setTimeout(function() {
        $("#online_form_a").trigger('click');
    },10);
});
</script>

此代码应在 10 秒后单击元素 &lt;a&gt;,但脚本不起作用。

请告诉我哪里出错了?

P.S.:看工作脚本可以看JsFiddle

【问题讨论】:

  • 触发点击不会重定向您。你必须改变自己的window.location
  • @elclanrs 你不对。触发器应该点击&lt;a&gt;
  • 我不做 ridirect。我只需要点击,启动fancebox
  • 然后使用fancybox或任何插件API,它可能有一个open或类似的方法。
  • @elclanrs 我使用插件 fancybox for wordpress 但我不知道如何在窗口中自动打开 iframe (

标签: javascript jquery triggers


【解决方案1】:

触发点击事件意味着您正在调用绑定到该元素的点击事件的函数..而不点击该元素

但是您的元素没有附加点击事件..

这样做...

<a class="fancybox iframe" href="http://google.com" id="online_form_a">test</a>


$(document).ready(function() {
     // add the fancy box click handler here

     $('a').click(function(){
       window.location.href = "http://google.com";
     });

     setTimeout(function() {
        $("#online_form_a").trigger('click');
     },10000);                //  this value is in milliseconds(1 sec = 1000 ms)
 });

【讨论】:

    【解决方案2】:

    不是 10,这是毫秒,所以如果你想要 10 秒,你必须使用 10000。

    演示http://jsfiddle.net/yeyene/NW5Rj/2/

    $(document).ready(function() {
        // add the fancy box click handler here
        setTimeout(function() {
            $("#online_form_a").trigger('click');
        },10000);
    
        $('a').click(function(){
           alert('Hi'); 
        });
    });
    

    【讨论】:

      【解决方案3】:

      这里我假设你想自动重定向到a 的href 值,使用.trigger() 不会发生这种情况。

      trigger 方法将触发注册的事件处理程序,但可能不会触发关联元素的默认操作。

      来自文档

      虽然 .trigger() 模拟事件激活,但完成 合成的事件对象,它不能完美地复制一个 自然发生的事件。

      另一个选择是.triggerHandler(),但即使这样也不会导致默认行为

      .triggerHandler() 方法不会导致默认行为 发生的事件(例如表单提交)。

      所以解决方法是在这里使用window.location

      window.location = $('#online_form_a').attr('href')
      

      【讨论】:

        【解决方案4】:
        <a class="fancybox iframe" href="http://google.com" id="online_form_a" >test</a>
        
        $(文档).ready(函数() { // 在此处添加花哨的框单击处理程序 设置超时(函数(){ location.href = $("#online_form_a").attr('href'); },1000); });

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-17
          • 1970-01-01
          • 1970-01-01
          • 2022-01-20
          • 2013-03-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多