简体   繁体   English

自动完成搜索无法正常工作,请不要迭代$ .each中的所有元素。

[英]Auto complete search is not working properly, do not iterate all elements in $.each ul li shows on time in response

I have implemented auto complete search in my site. 我已经在自己的网站上实现了自动完成搜索。 The problem is that response is coming properly but it do not iterate all elements in <ul><li> elements. 问题是响应正确到来,但是它不会迭代<ul><li>元素中的所有元素。 Always shows one element in HTML but coming multiple from response. 始终显示HTML中的一个元素,但来自响应多个元素。

On the top search see if you type only river it comes with river records but do not show all in one ul li means li iteration is not working. 在顶部的搜索看到,如果你键入唯一的内河它配备了河流的记录,但不显示在同一个ul lili迭代是行不通的。

Here is my Jquery code: 这是我的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>

Here is HTML Code: 这是HTML代码:

<input type="text" name="keyword" id="keyword" />
<input type="hidden" name="field" id="field" value="all" />
<div id="lists"></div>

first Initialize total like 首先初始化总计如

var total = ''; 

And in your each , Use index to get all records. 并且在您的each ,使用index来获取所有记录。

$.each(data.locations, function( index ) {
     total +=  '<li>' + data.locations[index].value + '</li>';
});

$('#lists').html('<ul>' + total + '</ul>'); 

Try using .append() it's a more clean approach. 尝试使用.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
    });
}

Also check this: jquery .html() vs .append() 还要检查一下: jquery .html()vs .append()

replace this: 替换为:

total =  '<li>'+data.locations[0].value+'</li>';

with this: 有了这个:

total +=  '<li>'+data.locations[0].value+'</li>';

and befor the each loop define total like below: 并且在每个循环之前定义总计,如下所示:

var total = '';
$.each(data.locations, function( key, value ) {
    total +=  '<li>'+data.locations[0].value+'</li>';
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM