我使用 JS 方法将计算机语言的名称分配给div
的数据属性
e.g
<div id="Languages" data-Languages=''></div>
和js
代码
var langs='["Perl", "PHP", "Python", "Ruby", "Scala", "C#"]';
$('#Languages').data('Languages', langs);
但是当我在文本框中键入文本时,它会给我一个错误 对象预期 我正在使用此行进行自动填充
$(function () {
$("#tags").autocomplete({ source: $('#Languages').data('Languages') });
});
当我创建另一个变量并将其作为jquery website
中实现的源传递时,它完全正常我想用div的数据属性处理它,因为将来我想使用JSON
在页面加载时获取自动完成数据并将其分配给div数据属性。
对不起,如果这个问题听起来很愚蠢,那就是我jquery
的第二天以及所有这些。
答案 0 :(得分:4)
不确定这是不是你的问题,但你的数组周围有单引号,使它成为一个字符串。
它应该是:
var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];
答案 1 :(得分:4)
你的langs就像'',它使它成为一个字符串。你需要一个行为像自动完成源的数组。您正在尝试的数据的ID和密钥也不匹配。试试这个
var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];
$('#locations').data('languages', langs);
$(function () { $("#tags").autocomplete({
source: $('#locations').data('languages') });
});
答案 2 :(得分:1)
问题是,当div实际上没有加载到页面上时,您正在将数据分配给div外部页面就绪功能。尝试下面提到代码,它对我来说很好。
$(function () {
var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];
$('#locations').data('languages', langs);
$("#tags").autocomplete({
source: $('#locations').data('languages') });
});
答案 3 :(得分:1)
这与@Rahul解决方案没什么不同。
但也许你想直接从数据属性中读取:
var langs = ["Perl", "PHP", "Python", "Ruby", "Scala", "C#"];
$('#locations').attr('data-Languages', langs);
$(function () { $("#tags").autocomplete({
source: $('#locations').data('languages').split(',')});
});