自动完成搜索无法正常工作,不要遍历 $.each 中的所有元素 ul li 按时显示响应
Auto complete search is not working properly, do not iterate all elements in $.each ul li shows on time in response
我在我的站点中实现了自动完成搜索。问题是响应正常,但它不会迭代 <ul><li>
元素中的所有元素。
始终在 HTML 中显示一个元素,但来自响应的多个元素。
在顶部搜索中查看是否只键入河流,它带有河流记录,但不显示所有内容 ul li
表示 li
迭代无效。
这是我的 Jquery 代码:
<script>
$(document).ready(function(){
$('#keyword').keyup(function() {
var total;
$.ajax({
type: "POST",
url: "http://realtyexecutivesny.com/getRecSet.php?rnd=" + Math.random(),
data:{ key: $(this).val() },
success: function(data){
$.each(data.locations, function( key, value ) {
total = '<li>'+data.locations[0].value+'</li>';
});
$('#lists').html('<ul>'+total+'</ul>');
}
});
});
$('#lists ul li').click(function(){
$('#keyword').val($(this).html());
$('#field').val($(this).parent().data('field'));
});
});
</script>
这里是HTML代码:
<input type="text" name="keyword" id="keyword" />
<input type="hidden" name="field" id="field" value="all" />
<div id="lists"></div>
先初始化总像
var total = '';
并且在您的 each
中,使用 index
获取所有记录。
$.each(data.locations, function( index ) {
total += '<li>' + data.locations[index].value + '</li>';
});
$('#lists').html('<ul>' + total + '</ul>');
尝试使用 .append()
这是一种更干净的方法。
success: function (data) {
$('#lists').html('<ul></ul>') // initiate clear element
$.each(data.locations, function (key, value) {
$('#lists ul').append('<li>' + data.locations[key].value + '</li>'); // append new elements to the ul element
});
}
同时检查一下:jquery .html() vs .append()
替换为:
total = '<li>'+data.locations[0].value+'</li>';
有了这个:
total += '<li>'+data.locations[0].value+'</li>';
在每个循环之前定义总计如下:
var total = '';
$.each(data.locations, function( key, value ) {
total += '<li>'+data.locations[0].value+'</li>';
});
我在我的站点中实现了自动完成搜索。问题是响应正常,但它不会迭代 <ul><li>
元素中的所有元素。
始终在 HTML 中显示一个元素,但来自响应的多个元素。
在顶部搜索中查看是否只键入河流,它带有河流记录,但不显示所有内容 ul li
表示 li
迭代无效。
这是我的 Jquery 代码:
<script>
$(document).ready(function(){
$('#keyword').keyup(function() {
var total;
$.ajax({
type: "POST",
url: "http://realtyexecutivesny.com/getRecSet.php?rnd=" + Math.random(),
data:{ key: $(this).val() },
success: function(data){
$.each(data.locations, function( key, value ) {
total = '<li>'+data.locations[0].value+'</li>';
});
$('#lists').html('<ul>'+total+'</ul>');
}
});
});
$('#lists ul li').click(function(){
$('#keyword').val($(this).html());
$('#field').val($(this).parent().data('field'));
});
});
</script>
这里是HTML代码:
<input type="text" name="keyword" id="keyword" />
<input type="hidden" name="field" id="field" value="all" />
<div id="lists"></div>
先初始化总像
var total = '';
并且在您的 each
中,使用 index
获取所有记录。
$.each(data.locations, function( index ) {
total += '<li>' + data.locations[index].value + '</li>';
});
$('#lists').html('<ul>' + total + '</ul>');
尝试使用 .append()
这是一种更干净的方法。
success: function (data) {
$('#lists').html('<ul></ul>') // initiate clear element
$.each(data.locations, function (key, value) {
$('#lists ul').append('<li>' + data.locations[key].value + '</li>'); // append new elements to the ul element
});
}
同时检查一下:jquery .html() vs .append()
替换为:
total = '<li>'+data.locations[0].value+'</li>';
有了这个:
total += '<li>'+data.locations[0].value+'</li>';
在每个循环之前定义总计如下:
var total = '';
$.each(data.locations, function( key, value ) {
total += '<li>'+data.locations[0].value+'</li>';
});