我制作了这个插件,让方法'[0] .click()'跨浏览器,但我无法在Firefox中工作,我在Firefox中的当前版本是3.6。 16.其他浏览器(Opera / Chrome / Safari / IE)效果很好。
HTML:
<a href="#" id="myanchor">z</a>
<ul>
<li id="1">1</li>
<li id="2">2</li>
<li id="3">3</li>
</ul>
使用Javascript:
jQuery.fn.runClick = function () {
var element = jQuery(this).get(0);
if (jQuery.browser.msie) { // IE
element.click();
}
else {
//var evt = document.createEvent("HTMLEvents");
//evt.initEvent('click', true, true);
var evt = element.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
element.dispatchEvent(evt);
}
return this;
};
jQuery(function() {
jQuery('li').bind('click', function(event) {
var
key = jQuery(this).attr('id');
jQuery('#myanchor').attr('href', 'www.mydomaind.com/x/?id=' + key).runClick();
});
});
感谢。
修改
我根据评论和回复扩展了一个例子
编辑II
类似的问题:
how-do-i-programmatically-click-on-an-element-in-firefox
browser-friendly-way-to-simulate-anchor-click-with-jquery
答案 0 :(得分:3)
你使用jQuery,但没有使用jQuery的.click()
方法...... 为什么?
var $elements = $('some-jquery-selector');
$elements.click(); // that's it.
答案 1 :(得分:2)
显然,单击Firefox中的链接不会触发它:
jQuery('#myanchor').click(function(){
alert("I was clicked, but I'll do nothing about it");
});
jQuery("li").click(function(){
var key = jQuery(this).attr('id');
jQuery('#myanchor').attr("href", "http://www.mydomaind.com/x/?id=" + key).click();
});
我无法看到你的大局,所以你可能有充分的理由去做。但如果所有这一切的唯一目的是转到另一页,请直接进行:
jQuery("li").click(function(){
top.location.href = "http://www.mydomaind.com/x/?id=" + this.id;
});
P.S。 ID不应以数字开头。