【发布时间】:2012-10-18 10:16:56
【问题描述】:
我需要为一个 js 对象动态添加属性,这是我通过 eval() 实现的:
$ ->
#Methods
window.add_address = (attributes, id=new Date().getTime())->
$container = $('ul#addresses_list')
$unit = $('<li>')
$.each attributes, (key,value)->
$input = $('<input type="hidden">')
$input.attr 'name', "contact[addresses_attributes][#{id}][#{key}]"
$input.val value
$unit.append $input
$container.append $unit
#Events
#Add address button
$('a#add_address').on 'click', (ev)->
attributes = new Object
$('#address_fields').find('input').each ->
eval("attributes.#{$(this).attr 'id'}='#{$(this).val()}'");
add_address attributes
这很完美,但我觉得 eval() 很尴尬,有没有办法“更漂亮”?我的意思是,我搜索了像 Jquery .serializeArray() 这样的替代品,但它似乎有效仅使用查询表单,我需要从该#address_fields div 获取输入。
【问题讨论】:
标签: javascript jquery json coffeescript