2010-11-17 73 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'); 
});