2

我正在制作一个简单的 iPhone 网页,其中列出了大约 200 个医学术语及其定义。我正在使用 JQuery 自动完成来允许用户动态搜索术语,当他们点击他们想要的术语时,我想在下面显示术语的定义。我需要帮助同时设置一个包含术语和定义的 JS 数组。

目前,我有一个这样加载的数组:

var terms = [
        "Abdomen",
        "Ability",
        "Abolish",
etc...

但是,如果我知道如何将术语及其定义加载到这样的数组中,我更愿意:

terms['Abdomen'] = 'stomach, stomach area, belly, tummy';
terms['Ability'] = 'skill';
terms['Abolish'] = 'end, do away with, get rid of';

无论如何,在terms数组列表的末尾,我激活了自动完成代码,如下所示:

$( "#terms" ).autocomplete({ source: terms,});
    $( "#terms" ).autocomplete({ minLength: 2 });
    $( "#terms" ).autocomplete({ delay: 0 });
    $( "#terms" ).autocomplete({ select: function(event, ui) 
    { 
        var myDiv1 = document.getElementById("content");
        myDiv1.appendChild(document.createTextNode(ui.item.label));
    }

现在所有这一切都是当用户点击下拉列表中的术语时,术语本身被称为ui.item.label刚刚写入contentdiv。我想要的是要写出该术语的定义。如何在 JQuery 中设置它,我可以让自动完成选择功能简单地编写定义而不是术语/标签?

4

2 回答 2

0

创建另一个单独的 js 数组,将术语作为字符串索引,就像你展示的那样。称它为其他类似的东西definitions,而不是terms。然后,当您要附加“内容” div 时,像这样创建一个新的

var newDefinition = definitions[ui.item.label];

这将称为术语的定义。然后像刚才那样使用 appendChild 函数。

于 2010-11-08T17:57:43.363 回答
0

根据示例,您应该能够在源数据数组中添加所需的所有属性,并能够在 select 事件中访问它们。

因此,您的源数据数组可能如下所示:

var terms = [
    {label : "Abdomen", desc: "stomach, stomach area, belly, tummy"},
    {label : "Ability", desc: "skill"},
    {label : "Abolish", desc: "end, do away with, get rid of"}
etc...

然后在您的选择事件定义中执行以下操作:

$( "#terms" ).autocomplete({ select: function(event, ui) 
{ 
    var myDiv1 = document.getElementById("content");
    myDiv1.appendChild(document.createTextNode(ui.item.desc));
}

所以不同之处在于你可以使用ui.item.desc而不是ui.item.label像以前那样使用。

于 2010-11-08T18:11:06.303 回答