如何使用 jQuery DOM 操作动态构建/添加列表元素(ul、ol、li)?
我正在编写一个 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");
。
var eObj = `*something*`.attr("id", "EE_ID").wrap(`*something*`);
我
var jObj = `*something*`.attr("id", "JJ_ID").wrap(`*something*`);
jObj.appendTo("#xmlOutputId")
I am programming an AJAX web page (using IE 8) and need to dynamically build a list in jQuery from the data returned. Later, I will be converting list to jQuery accordian.
I am also trying to learn the proper way to use these jQuery functions and chaining. I am just a jQuery NOOB, but understand JavaScript. I found a good article on jQuery dom functions: http://www.packtpub.com/article/jquery-1.4-dom-insertion-methods
I want to add as much as possible using the jQuery dom functions, and jQuery chaining, without resorting to HTML source code using text. I want to mostly use .wrap()
, .appendto()
, .attr()
, .text()
, and .parent()
.
I don't think that the ".attr("class", "CC_CLASS").
is the best way to add a class.
Given the HTML code:
<div id="outputdiv"></div>
Use jQuery dom functions to change it to be the following:
<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>
Some code I figured out (ignoring the spaces in text).
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");
Somehow add (fObj + gObj + hObj) into eObj ?
var eObj = `*something*`.attr("id", "EE_ID").wrap(`*something*`);
Somehow add (aObj + bObj + cObj+ dObj + eObj) into jObj ?
var jObj = `*something*`.attr("id", "JJ_ID").wrap(`*something*`);
jObj.appendTo("#xmlOutputId")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
.append
方法返回与您调用它的容器对象相同的容器对象 - 愉快地利用它来链接方法:实际上,您可以在不使用
vars,但在我看来这会变得太丑陋。
The
.append
method returns the same container object you called it on -- make use of this to chain methods pleasantly:You could actually do the entire thing in a single statement with no
var
s, but in my opinion that would be getting too ugly.