2012-09-08 103 views
2

我有一個滾動插件,它在初始化後將滾動量存儲在特定的ID中。Javascript:在另一個變量對象中替換變量值

我正在使用jQuery獲取div的id並將其存儲在變量出價中。

var bid = $(this).parent().parent().find(".video_s").attr('id'); 

在控制檯var var返回元素ID。由於滾動量被存儲在對象的特定於DOM元素ID

var bpos = bid.scrollData.scrollPosition[0][0]; 

上面的代碼不工作

變量出價包含元素的id(此正確地工作)

如果我在控制檯中鍵入elementID.scrollData.scrollPosition[0][0],它會完美地返回滾動量。其中elementID是特定的ID(如果是水平容器)。

請任何人都可以告訴我什麼是錯的。

解決方案1: window[bid].scrollData.scrollPosition[0][0]

解決方案2: eval(bid).scrollData.scrollPosition[0][0]

注:從未使用eval()。的eval()是緩慢和存在安全隱患

+0

'bid'是一個字符串,應如何有'scrol lData'屬性? – xdazz

+0

好! xdazz可以請你告訴我,我應該如何傳遞元素ID來獲得滾動量? –

回答

0

由於bid僅包含元素的ID字符串,但您需要包含實際的DOM元素的jQuery對象,代碼應該是:

var bpos = $('#'+bid).scrollData.scrollPosition[0][0]; 

$('#'+bid)根據投標中存儲的ID獲取元素。

在這個插件的元素的情況下被存儲在一個全局變量(這是BTW非常糟糕的編程風格。),這樣您就可以使用以下方法來訪問它們:

window[bid].scrollData.scrollPosition[0][0]; 
+0

我已經試過,但它不工作:( –

+0

@KakiR那個插件的名字是什麼? – Christoph

+0

沒有!編輯的一個也不工作:( –

0

我想你應該存儲位置,而不是ID

var bid = $(this).parent().parent().find(".video_s").attr('id'); 
var bpos = $('#'+bid).scrollData.scrollPosition[0][0] 
+0

我得到了elem ID使用jQuery,以及如何訪問相對於該ID的滾動值? –

+0

可以試試$('#'+ bid).get()。scrollData.scrollPosition [0] [0]和eval(bid).scrollData.scrollPosition [0] [0]看看是否有這2個給你你想要的 – MichaelT

+0

哇!!!!!非常感謝!它的工作(第二解決方案)!!!真棒!!謝謝兄弟! –

0

這樣做:

$('#'+bid).scrollData.scrollposition[0][0]; 
+0

試過,但不工作:( –