2011-11-25 26 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声明?这样你就不需要解析它,并且你的服务器端代码在任何一个实例中都将是相同的。