2011-11-25 51 views
1

這是標準的Jquery自動完成代碼。Jquery AutoComplete:如何使用DOM元素填充源數組?

<script> 
    $(function() { 
     var availableTags = [ 
      "JavaScript", 
      "C#", 
      "VB.NET", 
      "ASP.NET" 
     ]; 
     $("#tags").autocomplete({ 
      source: availableTags 
     }); 
    }); 
</script> 

比方說,我可以通過服務器端(ASP.NET/PHP),以填補一個HTML DOM(分隔符的文本或製成表/ TR/TD的網格)數據。如何通過它「讀取」並將其存儲在「availableTags []」中以供Jquery Autocomplete使用?

如果我隱藏(顯示:無;也許)這個DOM元素,將Jquery仍然能夠「看到」它?

回答

1

如果您不是直觀地呈現數據,我更喜歡隱藏字段解決方案。如果你隱藏的話,不需要構建表(儘管jquery可以使用,它只是一個可視化隱藏,它仍然在DOM中)。

.map()的功能隨後.toArray()生成JavaScript陣列:

<table> 
    <tr><td>Value1</td></tr> 
    <tr><td>Value2</td></tr> 
    <tr><td>Value3</td></tr> 
    <tr><td>Value4</td></tr> 
    <tr><td>Value5</td></tr> 
</table> 

var availableTags = $('td').map(function() { return $(this).text(); }).toArray(); 

或爲一個分隔的文本成隱藏字段:

<input type="hidden" id="myhiddenfield" value="value1|value2|value3" /> 

var availableTags = $('#myhiddenfield').val().split('|'); 

在動作位置:Jsfiddle

1

爲什麼不把服務器端代碼直接輸出到頁面的JavaScript聲明?這樣你就不需要解析它,並且你的服務器端代碼在任何一個實例中都將是相同的。