我很难理解如何使用JQuery模拟鼠标单击。有人可以告诉我我做错了什么吗?
HTML:
<a id="bar" href="http://stackoverflow.com" target="_blank">Don't click me!</a>
<span id="foo">Click me!</span>
jQuery的:
jQuery('#foo').on('click', function(){
jQuery('#bar').trigger('click');
});
演示:FIDDLE
当我单击#foo按钮时,我想模拟对#bar的单击,但是当我尝试这样做时,什么也没有发生。我也尝试过jQuery(document).ready(function(){...})
但没有成功。
您需要使用jQuery('#bar')[0].click();
模拟实际的DOM元素(而不是jQuery对象)上的鼠标单击,而不是使用.trigger()
jQuery方法。
注意:DOM Level 2在Safari中的某些元素.click()
上不起作用。您将需要使用解决方法。
您只需要在执行.click()
以下操作之前放置一个小型超时事件:
setTimeout(function(){ $('#btn').click()}, 100);
这是JQuery行为。我不确定为什么会这样,它只会触发链接上的onClick函数。
尝试:
jQuery(document).ready(function() {
jQuery('#foo').on('click', function() {
jQuery('#bar')[0].click();
});
});
参见我的演示:http : //jsfiddle.net/8AVau/1/
jQuery(document).ready(function(){
jQuery('#foo').on('click', function(){
jQuery('#bar').simulateClick('click');
});
});
jQuery.fn.simulateClick = function() {
return this.each(function() {
if('createEvent' in document) {
var doc = this.ownerDocument,
evt = doc.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, doc.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(evt);
} else {
this.click(); // IE Boss!
}
});
}
可能有用:
调用触发器的代码应在事件被调用后进行。
例如,当#expense_tickets值更改时,以及重新加载页面时,我想执行一些代码
$(function() {
$("#expense_tickets").change(function() {
// code that I want to be executed when #expense_tickets value is changed, and also, when page is reload
});
// now we trigger the change event
$("#expense_tickets").trigger("change");
})
jQuery.trigger('click');
只会导致一个事件在此事件上触发,它也不会触发默认的浏览器操作。
您可以使用以下JavaScript模拟相同的功能:
jQuery('#foo').on('click', function(){
var bar = jQuery('#bar');
var href = bar.attr('href');
if(bar.attr("target") === "_blank")
{
window.open(href);
}else{
window.location = href;
}
});
试试这个对我有用的方法:
$('#bar').mousedown();
我已经尝试了前两个答案,但是直到我从文件输入元素中删除了“ display:none”后,它才对我有用。然后我又回到了.trigger(),它在Windows的Safari浏览器中也起作用。
所以结论,不要使用display:none; 要隐藏文件输入,可以改用opacity:0。
从技术上讲,这不是答案,而是充分利用已接受的答案(https://stackoverflow.com/a/20928975/82028)为jQuery ACF字段上的标签创建下一个和上一个按钮:
$('.next').click(function () {
$('#primary li.active').next().find('.acf-tab-button')[0].click();
});
$('.prev').click(function () {
$('#primary li.active').prev().find('.acf-tab-button')[0].click();
});
只需使用此:
$(function() {
$('#watchButton').trigger('click');
});
您无法使用javascript模拟点击事件。jQuery.trigger()
函数仅在元素上触发一个名为“ click”的事件,您可以使用.on()
jQuery方法捕获该事件。
文章标签:eventtrigger , html , javascript , jquery , triggers
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!