0

我需要帮助。我找不到我的错误。出于某种原因,当我附加一个 ul 时,我得到了重复的 li。我创建了一个 AJAX 搜索,可以在键入时搜索结果。问题是当我离开页面时,例如,如果我点击个人资料并返回,如果我搜索相同的关键字,我会得到重复的结果。这很奇怪,因为我在输入任何内容之前清空()我的 ul。这可能非常简单,但我找不到它。

这是我的 jQuery,它附加了我的 ul:

    $(document).delegate("#search", "pageshow", function() {
        $("#search input").focus(function() {
            $("ul#search_list").empty();
            $(this).val("");
            localStorage.search = "";
        });
        $("#search input").keyup(function() {
            $("ul#search_list").empty();
            localStorage.search = $("#search input").val();
            var result = "";
            $.ajax({
                url: '/app/users/search/'+localStorage.search,
                dataType: 'jsonp',
                jsonp: 'jsoncallback',
                success: function(data) {
                    $.each(data, function(i,item){
                        var result = '<li><a href="#friend_profile" class="friend_profile" data-search_user_id="'
                        + item.id +
                        '"><img class="round" src="'
                        + item.picture + '" /><h3>'
                        + item.name + 
                        '</h3><p>' + item.location + '</p></a></li>';
                        $("ul#search_list").append(result);
                        $("ul#search_list").listview('refresh');
                    });
                },
                error: function(){
                    $("ul#relationships_list").text('Sorry, you dont seem to have any friends.');
                }
            });
        });
    });

这是正在附加的 HTML ul:

    <div data-role="page" id="search">

            <div data-role="header" data-position="fixed">
                <a data-rel="back">Back</a>
                <h1>Search</h1>
                <a href="index.html">Settings</a>
            </div><!-- /header -->

            <div data-role="content"> 
                <ul id="search_list" data-role="listview" data-filter="true">
                </ul>                 
            </div><!-- /content -->

            <div data-role="footer" data-position="fixed">
                <div data-role="navbar">
                    <ul>
                        <li><a href="#dash" data-icon="grid">Dash</a></li>
                        <li><a href="#points" data-icon="star">Points</a></li>
                        <li><a href="#claim" data-icon="check">Claim</a></li>
                        <li><a href="#search" data-icon="search" class="ui-btn-active ui-state-persist">Search</a></li>
                        <li><a href="#profile" data-icon="home">Profile</a></li>
                    </ul>    
                </div>
            </div><!-- /content -->

        </div><!-- /page -->

这是出现的屏幕截图。如果您想要视觉效果:

iPhone 模拟 jQuery Mobile

感谢大家!

4

2 回答 2

0

这些选项都不起作用。但我找到了一个快速修复方法,可以删除 ul 中的重复项。这是迄今为止唯一有效的方法。这是解决方案的链接:

jquery删除重复的li

于 2012-05-05T20:48:38.537 回答
0

有一次我在页面隐藏上清除结果时遇到了这个问题。我不确定您使用的是哪个版本的 JQueryMobile,但我在 1.0 中遇到了这个问题。ajax 事件似乎并没有破坏 pagehide 上的页面,所以我不得不删除 pagehide 上的元素。我不知道这是否有帮助。

于 2012-05-01T15:28:06.007 回答