1

我正在使用 jQuery 创建一个列表视图和一个过滤器。如果用户单击一个项目,我希望过滤器将文本设置为单击的项目并隐藏列表。但不是永久的!如果用户更改过滤器文本,列表需要返回。

这是我所拥有的:

    $(document).ready(function () {

        jQuery.support.cors = true;
        $("#groupSelectList").listview({
            filter: true,
            filterPlaceholder: '',
            icon: false
        });

        $('#groupSelectList').children('li').on('click', function () {
            $('#groupName').val($(this).text());
            $("input[data-type='search']").val($(this).text())
            //$("#groupSelectList").listview("refresh");//this refresh doesn't appear to do anything.
            $("#groupSelectList").listview().hide()//hide works, but the list won't come back if the user changes the input text.
        });
    });

...

此页面上的小部件是我正在使用的控件的示例:http: //view.jquerymobile.com/master/demos/

4

2 回答 2

1

我想出了如何做到这一点。如果有人感兴趣,为了让 jQuery 移动列表视图控件在单击时消失,然后在更改时重新出现,我将一个临时 keyup 事件绑定到搜索框。我的代码现在看起来像这样:

    var groupSelectHandler = function () {
        $("#groupSelectList").listview().show()
        $("#groupSelectList").listview("refresh");
        $("input[data-type='search']").unbind('keyup', groupSelectHandler);
    }

    $(document).ready(function () {
        $("#groupSelectList").listview({
            filter: true,
            filterPlaceholder: ''

        });

        $('#groupSelectList').children('li').on('click', function () {
            $('#groupName').val($(this).text());
            $("input[data-type='search']").val($(this).text());
            $("#groupSelectList").listview().hide();
            $("input[data-type='search']").bind('keyup', groupSelectHandler);
        });
    });

你可以在这个例子中看到,当点击被触发时,groupSelectHandler 被绑定到 keyup。当 keyup 触发时,它会显示列表并删除 keyup 事件。

于 2013-04-09T17:40:06.623 回答
1

一个可能的、更简单的解决方案可能是:

$( document ).on( "pageinit", "#myPage", function() {
    $('#groupName').val($(this).text());
        $("input[data-type='search']").val($(this).text());;
    $('#groupSelectList li').each(function (index) {
        $(this).addClass("ui-screen-hidden");
    });
});
于 2013-11-06T10:38:14.587 回答