2010-07-19 47 views
0

在Rails' RJS適配器,如何通過RJS代理訪問數組?

page['id'] // $('id') 

訪問一個CSS-ID,

page['id'].property // $('id').property 

的它的性質。但是我怎樣才能訪問一個數組索引,例如

page.select('ul').value_at(2) // $('id').select('ul')[2] 

是否有這樣做,而無需編寫任何方式:

page << "$('id').select('ul')[2]" 
+0

如果我想實現這樣的功能value_at,我哪裏會要開始? – giraff 2010-08-01 15:40:49

回答

2

您不能訪問數組一樣,從RJS,但是,這些人將工作:

page['id']['firstChild']['nextSibling'] 
page['id'].down(2) 

生成:

$("id").firstChild.nextSibling; 
$("id").down(2); 

當然,t他最好的解決方案是將一些識別css類或元素id添加到第二個元素,並從你的rjs文件中選擇。

如果你想堅持使用page.select,你可以實現value_at像這樣(這裏稱爲新秀):

>>> Array.prototype.pick = function(n) { return this[n]; }; 
function() 
>>> ['a', 'b', 'c'].pick(1) 
"b" 
+0

避免這個問題的好方法!我仍然無法相信這個相當基本的語法沒有被覆蓋,但是沒問題。 ((小評論:2是第三個孩子,所以它應該閱讀'['firstChild'] ['nextSibling'] ['nextSibling']',不是嗎?) – giraff 2010-08-01 15:23:43

+0

一個識別類不能解決這個問題,因爲它會生成另一個Array。 – giraff 2010-08-01 15:24:23

+0

對不起,您需要添加一個ID,我已經編輯了我的答案,其中包含一個'value_at'的實現,您可以將其包含在您的js文件中以按照您的方式執行操作。 – jdeseno 2010-08-04 15:44:00