2011-12-08 166 views
1

我必须忽略简单的东西,但我只是不明白。触发点击jQuery

我试图触发listitem中超链接的点击。

JS

(function($) { 
    $('li').click(function() { 
     var li = $(this); 

     var link = $('a', li); 

     link.click(); 
    }); 
})(jQuery); 

HTML

<ul> 
    <li><a href="http://example.com" target="_blank">TEST</a></li> 
</ul> 

当我在jsFiddle运行上面的代码中,我得到一个错误:

<error> 
jQuery.event.dispatch 
jQuery.event.add.elemData.handle.eventHandle 
jQuery.event.trigger 
jQuery.fn.extend.trigger 
jQuery.extend.each 
jQuery.fn.jQuery.each 
jQuery.fn.extend.trigger 
jQuery.each.jQuery.fn.(anonymous function) 
(anonymous function) 
jQuery.event.dispatch 
jQuery.event.add.elemData.handle.eventHandle 
jQuery.event.trigger 
jQuery.fn.extend.trigger 
jQuery.extend.each 
jQuery.fn.jQuery.each 
jQuery.fn.extend.trigger 
... 

所以我想触发当用户点击listitem时点击超链接。

回答

0

用途:

(function($) { 
    $('li').click(function(e) { 
     var li = $(this); 

     if (!$(e.target).is('a')){ 
      var link = $('a', li); 
      window.open(link.attr('href'), link.attr('target')); 
     } 
    }); 
})(jQuery); 

测试: http://jsfiddle.net/vFZ3Z/1/

+0

李在单击时没有打开链接 – PeeHaa

+0

再试一次。我已经更新了我的答案。 – Darm

+0

nopez仍然不起作用 – PeeHaa

0

我相信你是从触发超链接点击作为浏览器的安全功能防止正。尝试使用JavaScript来明确地打开窗口,而不是:

(function($) { 
    $('li').click(function(e) { 
     var link = $(this).find('a'); 
     link.click(); 
    }); 
    $('a').click(function(e) { 
     e.stopPropagation(); 
     var href = $(this).attr('href'); 
     var tgt = $(this).attr('target'); 
     window.open(href,tgt); 
     return false; 
    }); 
})(jQuery); 

http://jsfiddle.net/mblase75/CKucA/15/

+0

Nopez不起作用。 – PeeHaa

+0

@PeeHaa您使用的是什么浏览器?它对我来说非常合适。 – Blazemonger

+0

我注意到你没有在你的代码中使用'$(document).ready'包装器;这可能会给你的页面造成麻烦。 http://jsfiddle.net/mblase75/CKucA/17/ – Blazemonger