动态内容被抛出表格

时间:2011-06-30 10:22:35

标签: javascript jquery html dynamic

我在生成实时搜索结果列表时遇到问题 - 我将它们放在id为“result”的特殊div中,如下所示(不介意SightsList,这是一个AJAX - 预先检索的数组;我知道,algorythm也不是最优的,但那不是主题。所以主要的问题是为什么表行会被抛出表格?浏览器中的Html看起来像<table></table><tr><td>(然后生成所有行)。问题与<ul><li>相同。

$("input#namebox").keyup(function() {  

    var value = $(this).val();
    value = value.toLowerCase();
    value = $.trim(value);

    if (value.length > 3) {

        $("#result").html("<table>");

        for (var i=0; i<SightsList.length; i++) {
            if (undefined != SightsList[i]) {
                if (void 0 != SightsList[i]) {

                    SightsList[i] = SightsList[i].toLowerCase();

                    if (SightsList[i].indexOf(value)+1) {

                        $("#result").append('<tr><td class="singleresult" valign="middle">' + SightsList[i]+ '  –  ' + '<img src="/images/balloon.gif" rel="'+ i +'" class="balloon_img" /></td></tr>');

                        $("#message").show();
                    }
                }
            }

            if (i==(SightsList.length-1)) {
                $("#result").append("</table>");
            }
        }


        //tried to close table here with the same (no) result                                   $('.singleresult').highlight(value);

        $("#result").show();
    }

    if (value.length < 4) { 
        $("#result").hide();
        $("#result").html("");  
    }
}

1 个答案:

答案 0 :(得分:3)

.html和.append不只是字符串函数,它们在DOM上工作。

$("#result").html("<table>")在#result元素中放置一个表。由于没有指定行,因此它是一个空表(<table></table>)。然后你的.append会尝试在该表之后放一行。

因此,您不想附加到#result的内容,而是要附加到您正在创建的表中:

$("#result > table").append('<tr><td class="singleresult" valign="middle">' + SightsList[i]+ ' ' + '<img src="/images/balloon.gif" rel="'+ i +'" class="balloon_img" /></td></tr>');

并删除您尝试添加结束表标记。