2011-12-08 163 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