【问题标题】:How can i use a function callback for setting a newly created element attribute?如何使用函数回调来设置新创建的元素属性?
【发布时间】:2017-06-09 20:50:30
【问题描述】:

this 问题的推动下,我一直在尝试做一些我以前从未尝试过的事情。

使用创建新 HTML 元素的最新方法,我做了以下工作:

$(function() {
  var $element = $('<select>', {
    class: 'form-control',
    name: 'dropdownmenu',
    text: function() {
      var $test = $('<option>', {
        value: '1',
        text: '1'
      });

      return $test;
    }
  });

  $('p').after($element);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
</p>
<p>
</p>
<p>
</p>
<p>
</p>
<p>
</p>

但是,如您所见,我无法在创建的 &lt;select&gt; text 属性中插入“真实”&lt;option&gt;。我得到的回报是[object Object]

我什至尝试返回.get(0),但也没有用。

我还没有非常熟悉 JavaScript,所以我只是想知道这是否可能。如果是,我可以做些什么来实现所需的行为?

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    你在正确的轨道上,但如果你想插入嵌套的 html,你需要使用 html 而不是 text。看下面的sn-p:

    $(function() {
      var $element = $('<select>', {
        class: 'form-control',
        name: 'dropdownmenu',
        html: function() {
          var $teste = $('<option>', {
            value: '1',
            text: '1'
          });
    
          return $teste;
        }
      });
    
      $('p').after($element);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <p>
    </p>
    <p>
    </p>
    <p>
    </p>
    <p>
    </p>
    <p>
    </p>

    编辑 - 后续问题(多选)

    您只需对代码进行最少的更改即可映射所需的选项 - 请参阅下面的 sn-p:

    var options = [1, 2, 3, 4, 5];
    
    $(function() {
      var $element = $('<select>', {
        class: 'form-control',
        name: 'dropdownmenu',
        html: options.map(function(option) {
          return $('<option>', {
            value: option,
            text: option
          })
        })
      });
    
      $('p').after($element);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <p>
    </p>
    <p>
    </p>
    <p>
    </p>
    <p>
    </p>
    <p>
    </p>

    【讨论】:

    • 我明白了!你知道我在哪里可以学习使用这种创建方法时可以设置的所有属性吗?我查看了 jQuery 文档,但没有具体说明。另外,我能做些什么来在这个回调中创建多个选项? for 循环是最好的方法吗?
    • 注意class应该被引用,因为它是一个关键字
    • @guest271314 - 删除该部分,因为它不是错误
    • @doutriforce 我添加了另一个 sn-p。最干净的方法是使用map imo。另外你应该接受上面的建议,它很中肯(但是从 ES5 开始不需要引用“class”,所以不要担心那部分)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 2019-06-06
    • 2020-09-16
    相关资源
    最近更新 更多