【问题标题】:Dynamically assign properties to a JS object将属性动态分配给 JS 对象
【发布时间】: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


    【解决方案1】:

    使用object['key'] 表示法

    attributes[$(this).attr('id')] = $(this).val();
    

    使用以下方法创建对象也非常有效:

    var attributes={};
    

    编辑:类似的行可以用相同的符号编写 jquery 方法

       attributes[$(this)['attr']('id')] = $(this)['val']();
    

    【讨论】:

    • 正是我想要的。这几乎让我对新手问题感到难过。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 2019-03-20
    • 2016-03-09
    • 2017-12-04
    • 2014-04-05
    • 2013-06-16
    • 2011-02-17
    • 2011-09-22
    相关资源
    最近更新 更多