2013-03-25 154 views
1

我認爲它非常基本的面向對象的javaScript相關問題。但我仍然很困惑。我想從1個函數傳遞$(this)對象到另一個函數。這樣我可以獲得點擊鏈接的鏈接。

這裏我的示例代碼

HTML

<a href="#testblah" class="test" rel="image">TEST</a> 
<a href="#blahtest" class="test" rel="video">TEST</a> 

JS

$(document).on("click", ".test", function() { 

var $this = $(this); 
var rel = $this.attr("rel"); 

if (rel == "image") { 
    e.preventDefault(); 
    openImage($this); 
} else if (rel == "video") { 
    openVideo($this); 
} 
}); 

function openImage($this) { 

var href = $this.attr("href"); 
alert(href); 
} 
+5

如果您讓您的事件處理程序接受'e'參數,那麼您的代碼工作正常:http://jsfiddle.net/6zAN7/19/ – 2013-03-25 17:00:28

+0

是的,您絕對正確@AndrewWhitaker! *無賴*我犯了一個愚蠢的錯誤! 只是要求意見是上述代碼的最佳做法?我的意思是我定義了一個名爲$ this的變量,然後使用相同的名稱在其他函數中調用該對象?我應該使用不同的名字嗎?或者根本不重要! 謝謝.. – 2013-03-25 17:10:14

+4

我會把這個變量命名爲更有意義的東西,比如'link'或'anchor'。 '$ this'不是很具描述性。從技術上講,這並不重要。 – 2013-03-25 17:11:14

回答

0

我的問題有1個小的語法錯誤,請(檢查的問題1評論)

是我最終的代碼使用以下。

$(document).on("click", ".test", function (e) { 

    var anchor = $(this); 
    var rel = anchor.attr("rel"); 

    if (rel == "image") { 
     e.preventDefault(); 
     openImage(anchor); 
    } else if (rel == "video") { 
     openVideo(anchor); 
    } 
    }); 

    function openImage(anchor) { 
    var href = anchor.attr("href"); 
    alert(href); 
    } 

謝謝!

0

退房jQuery的文檔page的例子。你會發現方法適用於選定的元素,在你的代碼的情況下,它是文檔對象。爲了得到你想要的屬性,jQuery沒有必要包裝元素。這是一個JSBin example。還有一件事,請用===嘗試reemplace ==以獲得類型檢查。希望它可以幫助

相關問題