2011-03-24 33 views
3

我試圖包裝成一個功能是:jQuery的返回「未定義」試圖找到HREF

//Entire Div Clickable 
function clickableDiv(){ 
window.location = $(this).find("a").attr("href"); 
return false; 
} 

,然後調用它:

$("div.promo1").click(function(){ 
clickableDiv(); 
}); 

但它返回的網址: www.mywebsite.com/undefined

任何想法我做錯了什麼?

謝謝。

+2

向我們展示你的HTML? – Peeter 2011-03-24 17:51:45

+0

'

Some text

Learn more »

<! - end promo1 - >' – Yahreen 2011-03-24 17:54:24

回答

1
function clickableDiv(div) { 
    window.location = $(div).find("a").attr("href"); 
} 

$("div.promo1").click(function() { 
    clickableDiv(this); 
}); 

你必須在參考DIV傳遞到clickableDiv功能。


更新:替代解決方案:

function clickableDiv() { 
    window.location = $(this).find("a").attr("href"); 
} 

$("div.promo1").click(clickableDiv); 
+0

是的,我想將它包裝成一個函數,這樣我就可以在整個站點多次使用它並保存文件大小。 – Yahreen 2011-03-24 17:55:57

+0

@Yahreen我已經更新了我的答案。 – 2011-03-24 17:56:47

+0

謝謝!效果很好。 – Yahreen 2011-03-24 18:00:30

4

問題在於你正常呼叫clickableDiv,而不是將它綁定到事件。您正在從事件處理程序運行它,而不是將其設置爲作爲事件處理程序。這意味着this未設置爲元素。

您應該將該函數設置爲事件處理函數。

$("div.promo1").click(clickableDiv); 
+0

謝謝。我試圖將其封裝到一個函數中,以便在整個站點中多次使用它並保存文件大小。那可能嗎? – Yahreen 2011-03-24 17:57:09

+0

@Yahreen我不確定你的意思,但是Sime的回答看起來像是對你進行了分類。儘管如此,我不會過多擔心文件大小。如果它太大,你可以從一個縮小器獲得更多,比你從這樣的小調整中獲得更多。# – lonesomeday 2011-03-24 18:03:29