我正在尝试使用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版本。所以,哦,强大的思想,我做错了什么?任何指导都将不胜感激。
答案 0 :(得分:3)
使用$('a').click();
答案 1 :(得分:3)
这应该有用......
$(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();
}
}
答案 2 :(得分:1)
我在Chrome和Firefox中对此进行了测试,但没有IE便利。在大多数情况下,这应该透明地工作。
$('a').live('click.simclick', function(event){
var $a = $(event.target)
setTimeout(function(){
if (event.isPropagationStopped())
return
$('<form/>')
.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()
答案 3 :(得分:0)
我使用这种方法。似乎工作正常。
$(function() {
fireClick($("a"));
});
function fireClick (elem) {
window.location = $(elem).attr('href');
}