【问题标题】:How to dynamically build/add list elements (ul, ol, li) using jQuery DOM manipulations?如何使用 jQuery DOM 操作动态构建/添加列表元素(ul、ol、li)?
【发布时间】:2011-06-10 20:08:40
【问题描述】:

我正在编写一个 AJAX 网页(使用 IE 8)并且需要根据返回的数据在 jQuery 中动态构建一个列表。稍后,我会将列表转换为 jQuery 手风琴。

我也在尝试学习使用这些 jQuery 函数和链接的正确方法。我只是一个 jQuery NOOB,但懂 JavaScript。找到一篇关于 jQuery dom 函数的好文章:http://www.packtpub.com/article/jquery-1.4-dom-insertion-methods

我想尽可能多地使用 jQuery dom 函数和 jQuery 链接来添加,而不使用文本的 HTML 源代码。我想主要使用.wrap().appendto().attr().text().parent()

我不认为“.attr("class", "CC_CLASS"). 是添加类的最佳方式。

给定 HTML 代码:

<div id="outputdiv"></div>

使用jQuery dom函数将其更改为:

<div id="outputdiv"> 
 <ul id="JJ_ID"> 
  <li> AAA_text </li> 
  <li id="BB_ID"> BBB_text </li> 
  <li class="CC_CLASS"> CCC_text </li> 
  <li id="DD_ID">DDD_text<br/> 

    <ol id="EE_ID"> 
      <li> FFF_text </li> 
      <li id="GG_ID"> GGG_text </li> 
      <li class="HH_CLASS"> HHH_text </li> 
    </ol> 

  </li> 
 </ul> 
</div>

我想出了一些代码(忽略文本中的空格)。

var aObj = $('<li></li>').text("AAA_text")
var bObj = $('<li></li>').attr("id", "BB_ID").text("BBB_text"); 
var cObj = $('<li></li>').attr("class", "CC_CLASS").text("CCC_text");
var dObj = $('<li></li>').attr("id", "DD_ID").text("DDD_text");
var fObj = $('<li></li>').text("FFF_text");
var gObj = $('<li></li>').attr("id", "GG_ID").text("GGG_text"); 
var hObj = $('<li></li>').attr("class", "HH_CLASS").text("HHH_text"); 

以某种方式将 (fObj + gObj + hObj) 添加到 eObj 中?

var eObj = `*something*`.attr("id", "EE_ID").wrap(`*something*`);

以某种方式将 (aObj + bObj + cObj+ dObj + eObj) 添加到 jObj 中?

var jObj = `*something*`.attr("id", "JJ_ID").wrap(`*something*`);  
jObj.appendTo("#xmlOutputId")

【问题讨论】:

    标签: javascript jquery text append attr


    【解决方案1】:

    .append 方法返回你调用它的同一个容器对象——利用它来愉快地链接方法:

    var inner_list = $('<ol/>', {id: "EE_ID" })
        .append( $('<li/>', {text: "FFF_text" })
        .append( $('<li/>', {id: "GG_ID", text: "GGG_text" })
        .append( $('<li/>', {"class": "HH_CLASS", text: "HHH_text" });
    
    var outer_list = $('<ul/>', {id: "JJ_ID" })
        .append( $('<li/>', {text: "AAA_text" })
        .append( $('<li/>', {id: "BB_ID", text: "BBB_text" })
        .append( $('<li/>', {"class": "CC_CLASS", text: "CCC_text" })
        .append( 
            $('<li/>', {id: "DD_ID", text: "DDD_text"})
            .append(inner_list)
        );
    
    outer_list.appendTo('#xmlOutputId');
    

    您实际上可以在没有vars 的情况下在一个语句中完成整个事情,但在我看来,这会变得太丑陋了。

    【讨论】:

    • 美观紧凑。谢谢,我喜欢,但我在 .append( $('&lt;li/&gt;', {class: "CC_CLASS", text: "CCC_text" }) 上收到一个 javascript 错误,因为“类”是保留字。
    猜你喜欢
    • 2013-05-27
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多