2009-10-11 42 views
3

我對jQuery非常陌生,所以這可能是一個非常愚蠢的問題。 :-)我試圖得到像下面的工作:jquery - 從元素開始,通過這個指針傳入函數

<html> 
<head> 
    <title>JQuery test</title> 
    <script type="text/javascript" src="http://www.google.com/jsapi"></script> 
    <script type="text/javascript"> 
     google.load("jquery", "1"); // Load jQuery 

     function DoSomething(link) 
     { 
     $(link).after('<div>hello world!</div>'); 
     } 
    </script> 
</head> 
<body> 
    <a href="javascript: DoSomething(this);">Click!</a> 
</body> 
</html> 

現在,這似乎並沒有做任何事情。但是,如果我將該行更改爲:

$('a').after('<div>hello world!</div>'); 

然後插入一個DIV。不過,我想使用傳入函數的元素來控制元素的插入位置。基本上,我不知道如何基於通過「this」指針傳遞給函數的元素來啓動一個jQuery查詢。

感謝您的幫助,

〜賈斯汀

回答

3

使用jQuery,您可以儘量避免使用插入任何JavaScript到HTML可言,如:href="javascript: ..."href="#" onclick="..."。一個更好的方法是編寫一個查詢來定位該元素並應用該行爲。目標元素最簡單的方法是給它一個ID,但你可以使用任何你喜歡的方法。

<a href="#" id="myLink">Click!</a> 

和你的jQuery:

$('#myLink').click(function() { 
    $(this).after("<div>hello world!</div>"); 
}); 

event handling functions內,this是指由事件指向的DOM元素。

如果你想從一個元素的jQuery對象 - 只是把它傳遞給構造函數:

$(domElement) 

你可能得了的,因爲你調用處理方式的問題。試着改變你的鏈接,這種風格:

<a href="#" onclick="doSomething(this)"> 

只是別忘了要doSomething()回報虛假

+0

感謝您的響應。我想我可以做那樣的事情。頁面上會有多個鏈接需要調用該函數,因此我必須爲它們分配一個類或其他類,然後將該函數附加到該類的所有鏈接上。但是,我希望看到我的問題,以便我能夠更多地理解jQuery。 – RationalGeek 2009-10-12 00:13:51

+0

哦右傾...編輯現在...... – nickf 2009-10-12 00:24:38

1

改變從<a href="javascript: DoSomething(this);">Click!</a><a href="#" onclick="doSomething(this)">確實工作。

this僅在JavaScript函數中有意義。像onclick這樣的事件處理程序是一種功能。

javascript:僞網址不是功能。它們不會在頁面上的任何對象的上下文中執行。他們只是一個字符串。點擊鏈接與將該字符串輸入到Web瀏覽器的地址欄相同。因此this將給出默認值window,全局對象,當沒有特定的對象時總是傳遞該對象。

javascript:僞網址是一個完整的災難,不應該用於任何事情(當然,除了bookmarklets)。 onclick表單更好,但您應該記得添加return false;,以便它不會跟隨#鏈接跳轉到頁面頂部。

(帶的onclick非鏈接元素,或風格按鈕可能的東西是什麼,DoSomething的是做是不是鏈路更合適的,這取決於。)

+0

非常感謝。 – RationalGeek 2009-10-12 11:03:21