lic*_*ode 139 html javascript jquery triggers eventtrigger
似乎我无法正确理解jQuery触发器('click')功能.
有人可以告诉我为什么这个简单的代码不起作用以及如何解决?
HTML:
<a id="bar" href="http://stackoverflow.com" target="_blank">Don't click me!</a>
<span id="foo">Click me!</span>
Run Code Online (Sandbox Code Playgroud)
jQuery的:
jQuery('#foo').on('click', function(){
jQuery('#bar').trigger('click');
});
Run Code Online (Sandbox Code Playgroud)
演示:FIDDLE
我想要的是能够点击#foo(运行良好)并模拟#bar上的点击(完全忽略,没有任何错误消息).也试过jQuery(document).ready(function(){...})
但没有成功.
Ale*_*x W 263
您需要使用jQuery('#bar')[0].click();
鼠标单击实际DOM元素(而不是jQuery对象),而不是使用.trigger()
jQuery方法.
注意:DOM Level 2 .click()
不适用于Safari中的某些元素.您需要使用变通方法.
小智 37
你只需要在这样做之前放一个小的超时事件.click()
:
setTimeout(function(){ $('#btn').click()}, 100);
Run Code Online (Sandbox Code Playgroud)
Fil*_*rny 33
这是JQuery的行为.我不确定为什么它以这种方式工作,它只触发链接上的onClick功能.
尝试:
jQuery(document).ready(function() {
jQuery('#foo').on('click', function() {
jQuery('#bar')[0].click();
});
});
Run Code Online (Sandbox Code Playgroud)
Rez*_*mun 19
看我的演示: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!
}
});
}
Run Code Online (Sandbox Code Playgroud)
Alb*_*alà 14
可能有用:
调用触发器的代码应该在调用事件之后进行.
例如,我有一些代码,我希望在#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");
})
Run Code Online (Sandbox Code Playgroud)
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;
}
});
Run Code Online (Sandbox Code Playgroud)