2012-02-02 49 views
1

我正在創建一個視頻庫,並有6個縮略圖,點擊時會在頁面上的iframe中播放相應的視頻。JQuery變量覆蓋循環,想要保留不同的值

當用戶轉到視頻的下一頁,加載存儲在XML文檔中的新鏈接時,這6個縮略圖會發生變化。

var linkhtml=x[i].getElementsByTagName("linkhtml")[0].childNodes[0].nodeValue; 

通過從XML元素6圈我和更改縮略圖<td id="videoBox[1-6]">這樣:

$('#videoBox' + j).mousedown(function() { 
    frames['videoPlayer'].playVideo(linkhtml, videoPlaylist); 
}); 

然而,這並不工作,因爲當我點擊任何縮略圖,它調用在任何linkhtml上次設置的位置上,第6個視頻都放在頁面上。

如何獲得每個縮略圖以正確保留鏈接?

+0

這裏是不是真的有足夠的代碼的人理解你目前正在做的事情。什麼是'x [i]'的提法?據我所知,你總是將linkhtml設置爲一個值,並且始終要求你的mousedown中有一個值。你能編輯這個問題以包含所有相關代碼的更完整列表嗎? – Ryan 2012-02-02 01:34:15

+0

對不起,我可以看到它可能有點混亂。 @Guffa得到它,並解決了它。謝謝你的時間瑞恩。 – dougmacklin 2012-02-02 01:41:25

回答

0

使用匿名函數來創建,當時捕獲變量的值封閉:

(function(linkhtml){ 

    $('#videoBox' + j).mousedown(function() { 
    frames['videoPlayer'].playVideo(linkhtml, videoPlaylist); 
    }); 

})(linkhtml); 
+0

你先生,是一個絕對的天才。完美的工作,但我不完全理解它(jQuery語法明智),所以我有一些閱讀要做。非常感謝Guffa:D – dougmacklin 2012-02-02 01:40:32

+0

雖然有一個簡單的問題:在切換視頻頁面之前加載一個新的問題時,最好的方法是清除此問題的最佳方式是什麼?簡單地做mousedown(function(){});似乎並沒有伎倆 – dougmacklin 2012-02-02 01:45:38

+0

@DougieBear:jQuery可以處理多個事件處理程序,因此綁定另一個事件將不會取代之前的一個事件(就像直接使用DOM evements時一樣)。使用'unbind'方法刪除事件綁定。 – Guffa 2012-02-02 01:48:21