您触发点击事件的方式不起作用。
而是使用HTMLElement.click():
HTMLElement.click() 方法模拟鼠标单击元素。
当 click() 与支持的元素(例如其中一种类型)一起使用时,它会触发元素的单击事件。然后,此事件会冒泡到文档树(或事件链)中更高的元素并触发它们的单击事件。一个例外:click() 方法不会使元素启动导航,就像收到真正的鼠标点击一样。
因此,将其更改为:
$('a.get-plus').trigger('click');
至:
$('a.get-plus').get(0).click();
这个例子:
function zoomInChanged() {
// Zoom in
for (var i = 0; i < 3; i++) {
setTimeout(function () {
$('a.get-plus').get(0).click();
}, i * 1000);
}
}
function zoomIn() {
// Zoom in
for (var i = 0; i < 3; i++) {
$('a.get-plus').trigger('click');
console.log(i);
}
}
console.log('zoomIn:');
zoomIn();
console.log('zoomInChanged:');
zoomInChanged();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="get-plus" title="zoom in" href="javascript:console.log('Clicked')" style="display: inherit;"> </a>
更多阅读:
jQuery 的事件处理系统是原生浏览器事件之上的一层。当使用 .on( "click", function() {...} ) 添加事件处理程序时,可以使用 jQuery 的 .trigger( "click" ) 触发它,因为 jQuery 在最初添加时存储了对该处理程序的引用.
此外,它将触发 onclick 属性内的 JavaScript。
.trigger() 函数不能用于模拟原生浏览器事件,例如单击文件输入框或锚标记。这是因为,没有使用与这些事件对应的 jQuery 事件系统附加事件处理程序。