我正在尝试使用调用Web服务的结果动态创建链接列表。我的HTML中有<ul>
元素。
<ul id="myList"></ul>
我正在尝试使用jQuery foreach并追加创建列表项。
鉴于以下数据:
var options = {
{href: "#", text:"text"},
{href: "#", text:"text"},
{href: "#", text:"text"},
{href: "#", text:"text"}
};
我以为我可以使用以下脚本创建列表:
$each(options, function(index) {
$("#myList").append($("<li>", {}).append($("<a>", { href: options[index].href })).text(options[index].text));
});
虽然它有点工作,但文本最终会在锚元素之外。我最终想要的是:
<ul id="myList">
<li><a href="#">Text</a></li>
<li><a href="#">Text</a></li>
<li><a href="#">Text</a></li>
<li><a href="#">Text</a></li>
</ul>
有谁能告诉我哪里出错了?
感谢。
答案 0 :(得分:2)
你很接近,但你的语法有些错误。
var options = [
{href: "#", text:"text"},
{href: "#", text:"text"},
{href: "#", text:"text"},
{href: "#", text:"text"}
];
$.each(options, function(index) {
$("#myList").append($("<li>", {}).append($("<a>", { href: options[index].href }).text(options[index].text)));
});
您需要一组包含对象的选项。您在$.each
上也出现语法错误。示例:http://jsfiddle.net/5ZDZX/1/
答案 1 :(得分:1)
试试这个
$.each(options, function(index) {
$("#myList").append($("<li>").append($("<a>", { href: options[index].href , text : options[index].text})));
});
答案 2 :(得分:1)
我认为你可能错误地嵌套了append
。尝试:
$.each(options, function(index) {
$("#myList").append(
$("<li>", {}).append(
$("<a>", { href: options[index].href }).text(
options[index].text
)
)
);
});
您的方式是,您将text
添加到<li>
而不是<a>
。
答案 3 :(得分:0)
这是因为您将.text
li
设置为a
非{/ 1>} option
标记。
此外,使用{ }
代替[ ]
var options = [
{href: "#", text:"text"},
{href: "#", text:"text"},
{href: "#", text:"text"},
{href: "#", text:"text"}
];
$.each(options, function(index) {
$("#myList")
.append($("<li>", {})
.append($("<a>", { href: options[index].href }).text(options[index].text)
));
});
对象设置错误
DEMO:http://jsfiddle.net/4WTG3/
试试这个:
{{1}}
答案 4 :(得分:0)
答案 5 :(得分:0)
我成功使用了
$.each(result, function (i, file) {
$("#filelist").append('<li><a target="_blank" href="' + downloadUrl + '/' + file.StaticFileId + '">' + file.ShortDesc + '</a></li>');
});