最近我正在学习jQuery。我希望当我在这里写的时候
<input type="text" id="scrivo" />
我想过滤从json文件派生的数组。
json文件是这样的:
{
"Re":
[
{
"nm": "Edward the Elder",
"cty": "GB",
"hse": "House of Wessex",
"yrs": "899-925"
},
{
"nm": "Edgar",
"cty": "GB",
"hse": "House of Wessex",
"yrs": "959-975"
},
{
"nm": "Edward the Martyr",
"cty": "GB",
"hse": "House of Wessex",
"yrs": "975-978"
}
]
}
并且代码是:
<script language="JavaScript">
$(document).ready(function()
{
$('#scrivo').keyup(function()
{
var json = (function () {
var json = null;
$.ajax({
'async': false,
'global': false,
'url': "re.json",
'dataType': "json",
'success': function (data) {
json = data;
}
});
return json.Re;
})();
var o = $.grep(json, function (n) { return (n.nm.indexOf("El")) },true);
});
});
</script>
例如,我想过滤包含&#34; El&#34;的对象,这是json文件中的第一个对象。相反,我没有收到任何东西。 你能帮帮我吗?
答案 0 :(得分:1)
我发现了这个错误:您已经反转了grep
命令。这是一个jsFiddle,展示了我的答案:http://jsfiddle.net/UqE5n/3/
关键路线在这里:
var value = $('#scrivo').val();
var o = $.grep(jsonRe, function (n) {
return n.nm.indexOf(value) >= 0;
}, false); <--- "true" will invert the result!
它还将指导您如何使用jsFiddle进行代码示例询问。我自己正在学习jsQuery,谢谢你提出这个问题!