为什么触发点击不起作用?

时间:2013-06-12 02:57:03

标签: javascript jquery triggers

美好的一天。

我有代码:

<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秒后单击元素<a>,但脚本不起作用。

请告诉我哪里有错误?

P.S。:见工作脚本可以在JsFiddle

上看到

4 个答案:

答案 0 :(得分:3)

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

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

这样做......

<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)
 });

答案 1 :(得分:1)

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

DEMO 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'); 
    });
});

答案 2 :(得分:0)

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

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

来自Doc

  

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

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

  

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

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

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

答案 3 :(得分:0)

<a class="fancybox iframe" href="http://google.com" id="online_form_a" >test</a>
$(document).ready(function(){     //在这里添加精美的盒子点击处理程序     setTimeout(function(){         location.href = $(“#online_form_a”)。attr('href');     },1000); });