jquery触发bug

时间:2010-11-17 15:08:49

标签: jquery triggers

我有这个

...
<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

5 个答案:

答案 0 :(得分:4)

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

它不会模拟真正的点击。

相反,你可以写

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

答案 1 :(得分: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');
});

答案 2 :(得分:0)

怎么样:

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

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

答案 3 :(得分:0)

我认为CSS足以做你想做的事......

您想要的只是链接标记占用所有<li>空间。 在很多情况下,display:block;代码上的<a>就足够了,但我对您的HTML / CSS一无所知^^

答案 4 :(得分:0)

使用JavaScript,您无法模拟浏览器的本机点击。你必须为你的链接设置一个事件处理程序,一旦你触发'click'就会被触发。从那里你可以使用SLaks location = ...方法。