关于jquery的click()方法

时间:2023-03-09 21:53:59
关于jquery的click()方法

昨天,有个同事研究了以下jqury的click()方法,代码如下:

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#ago').click(function () { $('#a01').click();
$('#a02').click(); });
});
$(function () {
$("#a01").click( function () {
window.open("http://www.baidu.com" ) });
})
$(function () {
$("#a02").click( function () {
window.open("http://www.g.cn" ) });
})
</script>,
</head>
<li><a id="a01" target="_blank" href="http://www.baidu.com">www.baidu.com</a></li>
<li><a id="a02" target="_blank" href="http://www.g.cn">www.g.cn</a></li>
<br>
<button id="ago" style="border: 1px solid black;cursor: pointer">更新</button> </body>
</html>

如上代码,在chrom和Firefox IE 完全不一样。在chrome上只能打开一个窗口,而其他浏览器在点击更新的时候,可以同时打开2个页面。

经查资料:

Safari/Chrom只有在标签input/button情况下,支持click方法,而我们的例子中非如上标签。所以,我们在调用click()方法的时候,出现问题。

既然不支持jquery的方法,那我们使用dom的dispatchEvent方法,这样就支持了。代码如下:

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
function dispatch(el, type){
try{
var evt = document.createEvent('Event');
evt.initEvent(type,true,true);
el.dispatchEvent(evt);
}catch(e){alert(e)}
}
$(function () {
$("#ago").click(function () {
var a01 = document.getElementById('a01');
var a02 = document.getElementById('a02');
dispatch(a02, 'click');
dispatch(a01, 'click'); }) });
$(function () {
$("#a01").click( function () {
window.open("http://www.baidu.com" ) });
});
$(function () {
$("#a02").click( function () {
window.open("http://www.g.cn" ) });
})
</script>
</head>
<li><a id="a01" target="_blank" href="http://www.baidu.com">www.baidu.com</a></li>
<li><a id="a02" target="_blank" href="http://www.g.cn">www.g.cn</a></li>
<br>
<button id="ago" style="border: 1px solid black;cursor: pointer"><a id=""></a>更新</button> </body>
</html>