1

我有一个检索一些结果的 JQ-AJAX 函数,然后在成功时它应该创建一个列表并将其添加到一个元素中。我根据结果创建了一个 UL - 这是成功函数:

success: function (info) {
        var shipActionsUL = '<ul class="shipActionsList>';

        $(info).find('string').each(function (index) {
            var action = $(this).text();
            shipActionsUL += '<li id="'+action+'">'+action+'</li>';

        });

        shipActionsUL += '</ul>';
        $('#hello').text(shipActionsUL);

    }

现在,当#hello 的文本发生变化时,结果是:

<ul class="shipActionsList>
    <li id="aaMove">aaMove</li>
    <li id="aaAttack">aaAttack</li>
</ul>

这就是我希望 UL 在 DOM 中的样子。然而,这是文字。当我尝试使用 $('#hello').html(shipActionsUL); 实际列出列表时 我得到一个格式奇怪的 UL - 它的第一个列表项缺少它的项目符号,当我检查列表时它看起来像这样:

<ul class="shipActionsList>
    <li id=" aamove">aaMove</li>
    <li id="aaAttack">aaAttack</li>
</ul>

注意 aamove 的 id - 小写和它前面的额外空格。不管列表中的列表项是什么,它总是第一个被弄乱的元素。

另外,如果我要从只有

   shipActionsUL += '<li>'+action+'</li>';

$('#hello').html(shipActionsUL); 上的#hello 中根本不会出现列表。

XML 响应 - 来自成功的信息 - 将采用这种格式(现在只有 aaAttack 会被搞砸):

<?xml version="1.0" encoding="utf-8"?>
 <ShipActions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
 <shipID>162</shipID>
 <Actions>
    <string>aaAttack</string>
    <string>aaMove</string>
    <string>aaSttack</string>
 </Actions>
 </ShipActions>
4

2 回答 2

2

我认为这是因为您缺少 UL 标签上的结束引号:

var shipActionsUL = '<ul class="shipActionsList">'; //Previously missing closing double quote.

此外,如果您不希望 ID 包含额外的空间,您可以修剪action

var action = $(this).text().trim();
于 2013-08-04T17:20:56.703 回答
0

很奇怪,第一个列表项的文本节点之前没有空格。如果你这样做:

var action = $.trim($(this).text());
于 2013-08-04T17:22:34.553 回答