将内容与属性附加到jquery中新创建的内容

时间:2018-04-19 21:42:08

标签: jquery

目标:

   <div id="g_1" class="grp">
   <span id="g_i_1" class="grp_icon"></span>
   <span id="g_mng_1" class="grp_name"></span> 
   <span id="g_des_1" class="grp_des"></span> 
   <span id="g_lock_1" class="grp_lock"></span> 
   <span id="g_vis_1" class="grp_vis"></span> 
   </div>

jquery代码:

 $('<div/>', {id: 'g_'+ e.GID, class: 'grp'})
    .append($('<span/>'), {id: 'g_i_'+ e.GID, class: 'grp_icon'})
    .append($('<span/>'), {id: 'g_mng_'+ e.GID, class: 'grp_name'})
    .append($('<span/>'), {id: 'g_des_'+ e.GID, class: 'grp_des'})
    .append($('<span/>'), {id: 'g_lock_'+ e.GID, class: 'grp_lock'})
    .append($('<span/>'), {id: 'g_vis_'+ e.GID, class: 'grp_vis'})

结果:

   <div id="g_1" class="grp"> 
   <span></span>
   <span></span>
   <span></span>
   <span></span>
   <span></span>
   </div>

为什么要为父元素创建id和class属性,而不是为子元素创建,但是正在创建子元素?

1 个答案:

答案 0 :(得分:1)

具有属性的对象应该位于创建该元素的$()的参数中。 .append()没有采用属性参数,只需要追加元素。

&#13;
&#13;
var e = {GID: 1};
var div = $('<div/>', {id: 'g_'+ e.GID, "class": 'grp'})
    .append($('<span/>', {id: 'g_i_'+ e.GID, "class": 'grp_icon'}))
    .append($('<span/>', {id: 'g_mng_'+ e.GID, "class": 'grp_name'}))
    .append($('<span/>', {id: 'g_des_'+ e.GID, "class": 'grp_des'}))
    .append($('<span/>', {id: 'g_lock_'+ e.GID, "class": 'grp_lock'}))
    .append($('<span/>', {id: 'g_vis_'+ e.GID, "class": 'grp_vis'}));
console.log(div[0].outerHTML);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

此外,在将class用作属性名称时,应引用class dataType: 'json', 是一个Javascript关键字,如果您不引用它,某些浏览器会报告语法错误。