首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery AutoComplete多维数据源

Jquery AutoComplete多维数据源
EN

Stack Overflow用户
提问于 2013-06-25 14:46:48
回答 2查看 983关注 0票数 1

这是我的JSON格式的数据源:

代码语言:javascript
复制
{
"list-1":
    [{"id":"1","value":"andy"},{"id":"2","value":"sandy"}],
"list-2":
    [{"id":"1","value":"candy"},{"id":"2","value":"brandy"}],
"list-3":
    [{"id":"1","value":"mandy"},{"id":"2","value":"dandy"}]
}

我正在尝试获得以下输出:

代码语言:javascript
复制
<div id="result">
    <ul class="list-1">
        <li>andy</li>
        <li>sandy</li>
    </ul>
    <ul class="list-2">
        <li>candy</li>
        <li>brandy</li>
    </ul>
    <ul class="list-3">
        <li>mandy</li>
        <li>dandy</li>
    </ul>
</div>

默认的数据源(JSON格式)是这样的:{"id":"1"},{"foo":"bar"},我一直没有找到一个好的/容易遵循的文档/教程,关于如何检索多维数据数组。

有人能为我解释一下这一点吗?我需要在JQuery AutoComplete插件中修改/覆盖哪些内容才能实现此输出(在选择或成功事件中?或者我是否应该修改渲染部分以及如何修改)

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-25 15:21:40

您可以使用jquery tmplt作为模板工具( https://github.com/BorisMoore/jquery-tmpl)来实现您想要实现的目标。由于您的数据是一个JSON对象,因此您可以创建一个模板:

html:

代码语言:javascript
复制
<div id="result">

</div>


//On document ready:
$(document).ready(function(){
//set your json object (this could be from a ajax call or whatever)    
var objectData = 
    {
    "list-1":
        [{"id":"1","value":"andy"},{"id":"2","value":"sandy"}],
    "list-2":
        [{"id":"1","value":"candy"},{"id":"2","value":"brandy"}],
    "list-3":
        [{"id":"1","value":"mandy"},{"id":"2","value":"dandy"}]
    }

    //init variables
    var key, count = 0;
    //loop through the object:
    for(key in objectData) {
       //create a UL element for each main item:
       $('#result').append('<ul class="' + key + '"></ul>');

        //loop through each child object:
        if(objectData.hasOwnProperty(key)) {
            for (var i = 0; i < objectData[key].length ; i++)
             //add the template:  
             $.tmpl( '<li>${value}</li>', { "value" : objectData[key][i].value }).appendTo("." + key);  
        }
}

});

为此,请确保包含tmpl.js CDN:http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.js

小提琴在这里:http://jsfiddle.net/eRQ4V/

票数 0
EN

Stack Overflow用户

发布于 2013-06-25 15:14:40

我不是很确定,你指的是哪个自动补全,但我猜你是指这个:http://jqueryui.com/autocomplete,对吗?

我发现,大多数自动补全解决方案一点也不灵活。而且似乎只有几个(尽管我认为不久前有很多)。但是在xing的github页面上有一个可以使用的autoCompletion插件,它应该足够灵活,可能适合你的特殊标记。它的设计是灵活的。请查看on github/xing/jquery.autocompletr

自述文件只提到了该工具的sourceinputProcessoroutputProcessors参数,但您也可以使用itemRenderercontainerRendererbeforeShow挂钩。您最可能需要的itemRenderercontainerRenderer,用于完成特殊标记。

希望这能有所帮助。但是您的JSON响应在autocompleter中的使用真的很奇怪,所以您也可能必须更改JSON响应,使其只产生一个包含数据的数组,或者根据您的用例编写自己的响应。

干杯

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17290841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档