2011-06-30 55 views
0

我在生成實時搜索結果列表時遇到了問題 - 我把它們放在一個特殊的帶有「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(""); 
    } 
} 
+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>'); 

,並刪除您嘗試添加最終table標籤。