如何从RJS模板更改html标签属性值?

时间:2009-03-05 14:31:56

标签: javascript ruby-on-rails ruby rjs

是否可以从RSJ模板更改html标签属性值? 我知道有一个page.replace_html方法,但在我的情况下它并不是很有用,因为我有各种属性的冗长值(例如alt,图像的标题)。 我想要的是在RJS中更改img标签的src属性。 这有可能吗?

谢谢。

3 个答案:

答案 0 :(得分:3)

编辑:我的第一次尝试不起作用,但是这次尝试没有用。

update_page do |page|
  page['image_id']['src'] = new_image_url
end

答案 1 :(得分:3)

对Can的回答略有修改。如建议的那样,

update_page do |page|
    page['image_id']['src'] = new_image_url
end

转换为JS:

$('image_id').src = new_image_url

这适用于某些具有直接JS DOM变量访问权限的属性,但许多属性不具备。幸运的是,RJS非常擅长重写JS方法调用:

update_page do |page|
    page['image_id'].set_attribute('attrib', new_attrib_val)
end

转换为JS:

$('image_id').setAttribute('attrib', new_attrib_val)

你应该好好去。


小更新:如果您想要IE兼容性,可能需要使用write_attribute。


小更新:在上面,[:src]和:attrib可能是更好的样式,如果它们是静态的。

答案 2 :(得分:0)

根据Rails设置,上面的代码可能仅在您排除page_update起始和结束行时才有效 - 我在Windows 7上运行mongrel上的Rails,并将页面[element] [attribute]代码放在其上在update_page块之外,它自己工作正常,但是在块中包含它会破坏代码。