触发锚标记上的点击事件不起作用

时间:2015-12-09 08:36:30

标签: jquery jquery-trigger

我刚遇到 this question

FIDDLE

在此处触发锚标记上的click事件无效。

<a class="button2" href="#popup1">hello</a>
<div id="popup1" class="overlay">
  <div class="popup">
    <div class="contentSpec">
      <h2>Would you like to visit</h2>
      <h1>someURL</h1>
    </div>
    <a class="close" href="#"></a>
    <div class="content">

      <div class="box">
        <a class="button" href="#popup1">YES</a>
        <a class="button1" href="#popup1">NO</a>
      </div>
    </div>
  </div>
</div>

JS:

$(document).ready(function() {
  $(".button2").trigger('click');
});

我的问题是,为什么触发事件在这种情况下不起作用?

3 个答案:

答案 0 :(得分:22)

您需要调用本机DOM $this->SetFont('Times', '', 12, '', true); works fine. 方法才能触发默认的单击锚行为,jQuery专门excludes it on anchor

click()

-jsFiddle-

答案 1 :(得分:4)

使用

select p.id, p.name, r.url, r.upload_time, r.release_number from
(select p.id, max(r.release_number) release_number from packages p
join releases r on p.id = r.package_id
group by p.id) a
join packages p on p.id = a.id
join releases r on r.release_number = a.release_number

$(".button2").get(0).click(); 将返回第一个DOM对象而不是jquery对象,并且将触发get(0)

Updated fiddle

答案 2 :(得分:1)

当你没有绑定任何.click()事件时,它永远不会触发它。

您需要使用click而不是.click() jQuery方法触发DOM .trigger(e)事件,这应该仅适用于dom节点。您可以通过引入索引[0]或使用jQuery的方法.get(0)来实现。

而是试试这个:

$(document).ready(function() {
  $(".button2")[0].click();
  // or $(".button2").get(0).click();
});

如果是这种情况,则只能使用javascript执行此操作:

window.addEventListener('DOMContentLoaded', function(e){
   document.querySelector('.button2').click();
}, false);