Javascript 如何通过RJS代理访问阵列?
在Rails的RJS适配器中Javascript 如何通过RJS代理访问阵列?,javascript,ruby-on-rails,rjs,Javascript,Ruby On Rails,Rjs,在Rails的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]" page您无法从RJ访问这样的阵列,但是,以下任何一种都可以
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]"
page您无法从RJ访问这样的阵列,但是,以下任何一种都可以:
page['id']['firstChild']['nextSibling']
page['id'].down(2)
生成:
$("id").firstChild.nextSibling;
$("id").down(2);
当然,最好的解决方案是在第二个元素中添加一些可识别的css类或元素id,然后从rjs文件中进行选择
如果您想坚持使用page.select,您可以在以下位置实现value_(此处称为pick):
避免这个问题的好方法!我仍然不能相信这个相当基本的语法没有被涵盖,但是还好。((小注:2是第三个孩子,所以它应该是['firstChild']['nextSibling']['nextSibling']
,不是吗?)识别类不能解决这个问题,因为它会生成另一个数组。很抱歉,您需要添加一个id。我已经用“value\u at”的实现编辑了我的答案,您可以在js文件中按自己的方式进行操作。哦,哇,我想我必须在Rails中这样做,但这确实奏效。谢谢!如果我想实现这样一个value\u at函数的话,我应该从哪里开始?
>>> Array.prototype.pick = function(n) { return this[n]; };
function()
>>> ['a', 'b', 'c'].pick(1)
"b"