我有一些元素,大概是这样的:
<div>
<a>
<div>
当用户点击div上的任意位置时,我希望点击a
元素 - 出于可用性目的。
简单吧?所以我写了这个:
$('div.class').click(function(){
$('a.class', this).click();
console.log('clicked');
});
麻烦的是,这会点击a
元素,但事件会传播到div,点击它会点击a,这就好了。你可以看到它的去向。
我在jsfiddle上制作了一个样本:http://jsfiddle.net/XD6Vm/2/
但是jsfiddle没有显示日志。所以,如果你点击,萤火虫没有显示任何东西。但我的本地网站设置firebug疯狂的日志(点击),以至于最终脚本被杀死说too much recursion on this page
如何停止此递归?
ps:是的我知道,我知道我可以使用window.location来达到这个目的,但点击链接可以做一些额外的工作,并且还使用浏览器的窗口历史记录,所以我真的想点击那个恶意的a
让它点击它的爸爸。或妈妈或者div是什么。
请仔细阅读
由于每个人都在反复提出同样的建议并且不起作用,请看一下jsfiddle:http://jsfiddle.net/XD6Vm/2/尝试一下,看看它是否有效,然后再回答。当你点击一个div时,谷歌应该加载。这就是我想要的。
感谢。
答案 0 :(得分:4)
如果这是你的标记:
<div>
<a>
<div>
您需要做的就是在您的CSS中执行以下操作:
div a { display: block};
然后,锚元素将拉伸并占据父div中的所有可用空间。如果该div中存在其他一些元素,那么你可以这样做:
$('a.class').click(function(event){
event.stopPropagation();
alert('you clicked on me');
});
$('div.class').click( function () {
$(this).children('a.class').trigger('click');
});
答案 1 :(得分:2)
使用event.stopPropagation()
方法。
答案 2 :(得分:1)
这个怎么样?
$('selector').attr('onclick')()
答案 3 :(得分:1)
不要在子节点上使用click事件,只需将浏览器位置设置为href值
即可$('div.class').click(function(){
location = $(this).find('a').attr('href');
});
答案 4 :(得分:0)
$('div.class').click(function(event){
event.stopPropagation();
$('a.class', this).click();
console.log('clicked');
});
您需要在处理程序中添加event
参数和stopPropagation
方法