2010-11-17 71 views
0

我有这个jQuery的触发错误

... 
<li style="padding: 50px;"> 
    <a href="blabla" style="background:red;">Click Me</a> 
</li> 
... 

大家都可能知道,<a>标签将尺寸更小。 我想使用jquery为使...

$('li').click(function(){ 
    $(this).find('a').trigger('click');//does not work :(
    alert($(this).find('a').attr('href'););//returns blabla//which is correct 
}); 

任何想法,为什么<a>不能以这种方式被触发? PS

回答

4

jQuery的trigger函数将调用使用jQuery注册的事件处理函数。

它不会模拟真实的点击。

相反,你可以写

location = $(this).find('a').attr('href'); 
+0

是的,那是做的绝招:)...我认为JQ应该考虑触发本地点击:)上标签... – Val 2010-11-17 15:19:23

+0

@val:这是唯一可能在IE中。 – SLaks 2010-11-17 15:24:42

+0

他们可以使用window.location.href – Val 2010-11-17 15:35:13

0

如何:

$(this).find("a:first").click(); 

我想这是因为你还没有使用jQuery :-)绑定了 “A” 的onclick事件的任何东西

+0

然后,我不知道为什么我对我自己的网站测试:$(“#顶部菜单UL李UL李”)找到(“答:首先”)点击();作品完美吗? – CodeMonkey 2010-11-17 15:22:05

0

我认为CSS是足以做你想要什么?你想要什么

只是链接标签采取一切<li>空间。 在许多情况下display:block;<a>标签是不够好,但我不知道你的HTML/CSS ^^

+0

也许你想详细说说:) – CodeMonkey 2010-11-17 15:15:47

+0

这取决于许多参数的^^但我要去尝试。完成! – MatTheCat 2010-11-17 15:17:23

+0

好多了! ;) – CodeMonkey 2010-11-17 15:24:46

0

任何使用JavaScript你不能有浏览器的原生点击模拟。您必须为您的链接设置一个事件处理程序,一旦触发“点击”的确会触发该程序。从那里你可以用SLaks location = ...方法。

1
$(this).find('a').trigger('click') 

只有触发JavaScript事件,而不是默认的事件

这里是修复

$('li').click(function(){ 
    var url = $(this).find('a').attr('href'); 
    location.href= url 
}); 

Here is a working example

你可以把它简化过:

$('li').click(function(){ 
    location.href= $(this).find('a').attr('href'); 
});