
1 Tonni 2014 年 7 月 17 日 |
2 Tonni 2014 年 7 月 17 日 |
3 scarlex 2014 年 7 月 17 日 ``` $("#a").click(function() { $("#b")[0].click(); }) ``` |
4 Tonni 2014 年 7 月 17 日 哦,不好意识看错问题了,浏览器不允许JS触发链接实现跳转,不过可以hack,你在标签里面嵌套一个span,下面触发span的click事件,事件冒泡到父标签a链接时会出发a的click事件,从而实现页面跳转,另外你的代码里面a链接地址是不对的,参考1楼和2楼我给出的回答,修改完后的代码是这样的: http://jsfiddle.net/KtQQY/ |
6 Tonni 2014 年 7 月 17 日 这事StackOverflow上的讨论: http://stackoverflow.com/a/21334234 |
8 Tonni 2014 年 7 月 17 日 试了下3楼的回答,发现我4楼的回答是不确切的。 |
9 txlty 2014 年 7 月 17 日 $("#b").click(function(e) { console.log(e) }) $("#a").click(function() { var e = document.createEvent('MouseEvent'); e.initEvent('click', false, false); document.querySelector("#b").dispatchEvent(e); }) |
10 scarlex 2014 年 7 月 17 日 @Tonni @luhux $('#b') 返回的是 jQuery element,而 $('#b')[0] 返回的是 HTML element。 在 jQuery element 上面调用 click 是对该对象进行事件绑定,不过按照官方说法,$('#b').click() 也是 $('#b').trigger('click') 的简写。但作用在 <a> 标签上的时候会把 href 属性忽略掉。而在 HTML element 上面调用 click 才会真正跳转。 另一种写法是直接在 click 函数中进行跳转: $("#b").click(function(e) { ----var href = $(this).attr('href'); ----location.href = href; }); $("#a").click(function() { ----$("#b").click(); }) 参考资料: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.click http://api.jquery.com/click/ |
11 Biwood 2014 年 7 月 17 日 这个有点意思,用原生Javascript写这个函数没有任何问题,用jQuery却阻止了连接跳转事件 |
13 Biwood 2014 年 7 月 17 日 直接看了一下未编译版的jQuery源码,这里是click()的定义: click: { // For checkbox, fire native event so checked state will be right trigger: function() { if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { this.click(); return false; } }, // For cross-browser consistency, don't fire native .click() on links _default: function( event ) { return jQuery.nodeName( event.target, "a" ); } } 注释里面有一句“For cross-browser consistency, don't fire native .click() on links”,大意是“为了兼容多个浏览器,不触发链接上原生的click()事件”。这应该是jQuery为了增强其兼容性而做出的妥协吧。 |
14 chemzqm 2014 年 7 月 17 日 你想跳网页 location.href = url 不就行了,没必要这么搞吧 |