Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取JQuery.trigger(';单击';);启动鼠标单击_Javascript_Jquery_Html_Triggers_Eventtrigger - Fatal编程技术网

Javascript 如何获取JQuery.trigger(';单击';);启动鼠标单击

Javascript 如何获取JQuery.trigger(';单击';);启动鼠标单击,javascript,jquery,html,triggers,eventtrigger,Javascript,Jquery,Html,Triggers,Eventtrigger,我很难理解如何使用JQuery模拟鼠标点击。有人能告诉我我做错了什么吗 HTML: 演示: 当我点击按钮#foo时,我想模拟一个点击条,但是当我尝试这样做时,什么也没有发生。我还尝试了jQuery(document).ready(function(){…}),但没有成功。jQuery的.trigger('click')只会导致在此事件上触发事件,它也不会触发默认浏览器操作 您可以使用以下JavaScript模拟相同的功能: jQuery('#foo').on('click', function(

我很难理解如何使用JQuery模拟鼠标点击。有人能告诉我我做错了什么吗

HTML:

演示:

当我点击按钮#foo时,我想模拟一个点击条,但是当我尝试这样做时,什么也没有发生。我还尝试了
jQuery(document).ready(function(){…})
,但没有成功。

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

这就是JQuery行为。我不知道为什么它会这样工作,它只会触发链接上的onClick函数

尝试:


不能使用javascript模拟单击事件。
jQuery
.trigger()
函数仅在元素上触发名为“click”的事件,您可以使用
.on()
jQuery方法捕获该事件。

您需要使用
jQuery('#bar')[0]。click()
(不是jQuery对象),而不是使用
.trigger()
jQuery方法

注意:DOM级别2
。click()
在上不起作用。您需要使用一种变通方法

请参见我的演示:

可能有用:

调用触发器的代码应在调用事件后转到

例如,当#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");

})

我尝试了前两个答案,直到我从文件输入元素中删除了“display:none”之后,它才对我起作用。 然后我又回到了.trigger(),它在safari for windows中也起作用


所以结论,不要使用显示:无;要隐藏文件输入,您可以使用不透明度:0。

试试这个对我有用的方法:

$('#bar').mousedown();

从技术上讲,这不是一个答案,而是一个很好的使用接受答案()为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();
});

您只需要在执行
之前放置一个小的超时事件。单击()
像这样:

setTimeout(function(){ $('#btn').click()}, 100);
只要用这个:

$(function() {
 $('#watchButton').trigger('click');
});

jQuery触发器
仅在添加任何“jQuery click”事件时有效。否则,你将无法通过这种方式做任何事情;这是浏览器内置的安全措施。请参阅@Blazemonger的答案:@san.chez有趣,感谢您提供的信息,以前不知道此安全措施!“无法使用javascript模拟单击事件”-。错误。。。你可以用javascript/jquery模拟一个点击事件,你可以用.click-without-on捕获触发器点击事件。我会把
this.click()包装起来
使用它来单击jQuery ACF字段上的下一个选项卡:$('.next')。单击(函数(){$('.#primary li.active').next().find('.ACF tab button')[0]。单击();});谢谢它在桌面上工作。但在移动设备上(android chrome)就不是这样了。有什么建议吗?出于某种原因,这会破坏当前URL中的哈希值。如果上的某个HREF似乎不再有效(在Safari、Firefox上测试),那也是我的问题!对于
触发器()
不起作用的原因感到困惑。原来我在它调用的函数上面设置了触发器代码,所以钩子并没有真正就位。啊!一点也不气人<代码>触发器()
用于执行单击事件JavaScript部分。这非常类似于创建一个重复使用多次的
函数var(){}
。如果您试图在页面加载时模拟单击,这将非常有效。这也解决了我的问题,谢谢。其他解决方案都不能可靠地工作。我的代码显示了一个模态,然后模拟了单击选项卡。为什么有必要推迟?为了安全起见,我不得不使用500毫秒。
$('#bar').mousedown();
$('.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();
});
setTimeout(function(){ $('#btn').click()}, 100);
$(function() {
 $('#watchButton').trigger('click');
});