2

我正在使用JS方法将计算机语言的名称分配给div 例如的数据属性

<div id="Languages" data-Languages=''></div>

js代码

var langs='["Perl", "PHP", "Python", "Ruby", "Scala", "C#"]';
$('#Languages').data('Languages', langs);

但是当我在文本框中输入文本时,它给了我一个错误 Object Expected 我正在使用这一行进行自动完成

$(function () { 
    $("#tags").autocomplete({ source: $('#Languages').data('Languages') }); 
}); 

当我创建另一个变量并将其作为在 jquery网站中实现的源传递时,它工作得很好

我想用 div 的数据属性来处理它,因为将来我想使用JSON它来获取页面加载时的自动完成数据并将其分配给 div 数据属性。

对不起,如果这个问题听起来很愚蠢,这是我的第二天jquery和所有这些东西。

4

4 回答 4

4

不确定这是否完全是您的问题,但您的数组周围有单引号,使其成为字符串。

它应该是:

var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];
于 2013-01-15T09:03:22.250 回答
4

你的 langs 就像 '' 这使它成为一个字符串。您需要一个行为类似于自动完成源的数组。您正在尝试的数据的 ID 和密钥也不匹配。试试这个

var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];
$('#locations').data('languages', langs);
$(function () { $("#tags").autocomplete({ 
  source: $('#locations').data('languages') }); 
}); 
于 2013-01-15T09:04:44.410 回答
1

问题是您在页面就绪功能之外将数据分配给 div,而 div 并未实际加载到页面上。试试下面提到的代码,它对我来说很好。

$(function () { 
    var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];
    $('#locations').data('languages', langs);
    $("#tags").autocomplete({ 
       source: $('#locations').data('languages') }); 
});
于 2013-01-15T09:23:43.513 回答
1

这与@Rahul 解决方案没有太大区别。

但也许您想直接从 data 属性中读取:

var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];

$('#locations').attr('data-Languages', langs);

$(function () { $("#tags").autocomplete({ 
    source: $('#locations').data('languages').split(',')}); 
}); 

工作示例:http: //jsbin.com/oyusub/4/

于 2013-01-15T10:13:29.017 回答