2011-10-18 90 views
0

放置在document.ready()中的以下代碼查找每個.scrollable div並創建一個變量,爲每個面板指定一個id並激活滾動腳本。從ID變量計算變量

var orderit = 0; 
var scrolls = {}; 
$('.scrollable').each(function(){ 
    this.id = 'scrollp' + (++orderit); 
    scrolls[ 'myScroll' + this.id ] = new iScroll(this.id, { scrollbarClass: 'myScrollbar' }); 
}); 

的問題是,後來我需要通過調用嵌入腳本.refresh()方法來刷新這些變量。爲此,我們需要變量名稱。獲得變量的一種方法就是像這樣計算它的設置。

$('.dircore').click(function(){ 
    'myScroll' + $(this).attr('id').refresh(); 
} 

這在Firefox只即使螢火蟲說,這是一個錯誤,但它並沒有在其他瀏覽器工作,顯然不是這樣做的正確方法。

我希望有足夠的信息可以在這裏工作,但基本上我們需要使用我們想要刷新的元素的id來確定它是可變的,因此調用.refresh()方法來對付它的變量。

回答

0

難道你不能使用jQuery .data()函數將數據綁定到元素,並在稍後調用它?通過這種方式,您也可以安全地避免循環引用和內存泄漏。

像這樣:

$(文件)。就緒(函數(){$( '#scroll5')的數據( '數據',值);});

然後:

$( 'dircore ')每個({$(本)。數據(' 數據')刷新();}函數());

或類似的東西。

+0

我試試這個..... –

+0

IM仍然被告知當刷新方法被調用時它是未定義的 –

+0

FIREBUG ---- $(「#myScroll」+ refreshelement)正在返回以下錯誤。 data(「data」+ refreshelement)未定義 [Break On This Error] $('#myScroll'+ refreshelement).data('data'+ refreshelement).refresh(); -----我調試了所有使用警報來比較數據,它應該都工作 –