如果还没有将事件处理程序绑定到jQueryclick(),我可以调用jQueryclick()来跟随<a>链接,或者已经单击了吗?我的JavaScript中有一个计时器,它需要模拟单击一个链接,以便在时间流逝后转到另一个页面。为此,我使用jQuery的click()功能。我用过$().trigger()和window.location而且,我可以让它像预期的那样工作在这三种情况下。我观察到一些奇怪的行为click()我想弄清楚发生了什么以及为什么。我在这个问题中所描述的一切都使用Firefox,但我也对其他浏览器会如何处理这个问题感兴趣。如果我没有用$('a').bind('click',fn)或$('a').click(fn)设置事件处理程序,然后调用$('a').click()好像什么都没做。它不为此事件调用浏览器的默认处理程序,因为浏览器不加载新页。但是,如果我首先设置了一个事件处理程序,那么它将按预期的方式工作,即使事件处理程序什么也不做。$('a').click(function(){return true;}).click();这会加载新页面,就像我自己单击了a一样。所以我的问题有两个:这是因为我在哪里做错了什么行为吗?为什么打电话click()如果我没有创建自己的处理程序,那么对默认行为不做什么?编辑:正如霍夫曼在试图复制我的结果时所确定的那样,我上面描述的结果实际上并没有发生。我不知道是什么导致了我昨天观察到的事件,但我确信今天不是我在问题中描述的那样。因此,答案是您不能在浏览器中“伪造”单击,而jQuery所做的一切就是调用您的事件处理程序。你还可以用window.location改变页面,这对我来说很好。
3 回答
幕布斯6054654
TA贡献1876条经验 获得超7个赞
$.click
click
href
window.location.href = $('a').attr('href');
trigger
// Handle triggering native .onfoo handlers (and on links since we don't call .click() for links) if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false ) event.result = false; // Trigger the native events (except for clicks on links) if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) { this.triggered = true; try { elem[ type ](); // prevent IE from throwing an error for some hidden elements } catch (e) {} }
onClick
添加回答
举报
0/150
提交
取消