浏览器友好的方式用jQuery模拟锚点击?

我正在尝试使用jQuery模拟对锚标记的点击。 我一直在挖掘StackOverflow和谷歌一段时间,并没有发现任何适用于我正在测试的所有浏览器。 到目前为止,我发现了这个:

$(document).ready(function() { $.fn.fireEvent = function(eventType) { return this.each(function() { if (document.createEvent) { var event = document.createEvent("HTMLEvents"); event.initEvent(eventType, true, true); return !this.dispatchEvent(event); } else { var event = document.createEventObject(); return this.fireEvent("on" + eventType, event) } }); }; $('a').fireEvent('click'); }); 

这将触发Safari中的单击事件,但不会触发FireFox或我测试的IE版本。 那么,哦,强大的思想,我做错了什么? 任何指导将不胜感激。

这应该工作……

 $(function() { fireClick($("a")[0]); }); function fireClick(elem) { if(typeof elem == "string") elem = document.getElementById(objID); if(!elem) return; if(document.dispatchEvent) { // W3C var oEvent = document.createEvent( "MouseEvents" ); oEvent.initMouseEvent("click", true, true, window, 1, 1, 1, 1, 1, false, false, false, false, 0, elem); elem.dispatchEvent(oEvent); } else if(document.fireEvent) { // IE elem.click(); } } 

使用$('a').click();

我在Chrome和Firefox中测试了这个,但没有IE便利。 在大多数情况下,这应该透明地工作。

 $('a').live('click.simclick', function(event){ var $a = $(event.target) setTimeout(function(){ if (event.isPropagationStopped()) return $('
') .attr({ method: 'get', target: $a.attr('target'), action: $a.attr('href') }) .appendTo(document.body) .submit() // clean up in case location didn't change .remove() }, 0) }) // test it $('a').eq(0).click()

我用这种方法。 好像工作还可以。

 $(function() { fireClick($("a")); }); function fireClick (elem) { window.location = $(elem).attr('href'); }