如何将多个单独的查询结果显示到单个下拉框中的选项中

How do i display multiple separate query results into options in a single drop down box?

本文关键字:单个下 选项 显示 查询 单独 结果      更新时间:2023-09-26

请参考此处的快速和肮脏的jfiddle http://jsfiddle.net/Dano007/b11xarpp/5/

的赏金是得到下面的答案与更新的jfiddle一起工作。基本上是让下拉菜单显示函数的两个选项。当单击其中一个选项时,结果将返回到页面上。

我认为下面的答案将有助于如何处理这个问题,尽管我的尝试遇到了瓶颈。

如果你点击按钮,这是我想在使用过滤器时复制的最终结果。

</head>
<body>
    <!--Drop down filter box that should show each option returned from functions below-->
    <form>
        <select name="huge" class="btn-group select select-block mbl select-multiple" id="select#FriendsConnected">
            <option value="0">Filter Friends/Requests</option>
        </select>
        <button id="FriendsConnected" type="button" class="button button-magenta">Connected Friends</button>
        <button id="FriendsPending" type="button" class="button button-orange">Friend Requests</button>
    </form>
    <!--Displays content/images on page after filter-->
    <div id="container">
        <div id="userimgs" class="responsive-image"></div>
    </div>
    <div id="containerFriendsPending"></div>
    <div id="containerFriendsConnected"></div>
    <div id="container">
        <div id="badgeimgs"></div>
    </div>

    <script type="text/javascript">
        Parse.initialize("79tphN5KrDXdjJnAmehgBHgOjgE2dLGTvEPR9pEJ", "9lblofQNZlypAtveU4i4IzEpaOqtBgMcmuU1AE6Y");
    Parse.User.logIn("dave", "delvedia", {
        success: function(user) {
            console.log("Logged in!");
        }
    });

         /////////Filter One///////////////////
        function FriendsPending() {
            $('#containerFriends').empty();
            $('#containerFriendsRejected').empty();
            $('#containerFriendsRequestSent').empty();
            $('#containerFriendsConnected').empty();

            var currentUser = Parse.User.current();
            var FriendRequest = Parse.Object.extend("FriendRequest");
            var query = new Parse.Query(FriendRequest);
            query.include('toUser');
            query.include('SentTo');
            query.include("myBadge");
            query.equalTo("fromUser", currentUser);
            query.equalTo("status", "Pending");
            query.find({
                success: function(results) {
                    var friends = [];
                    for (var i = 0; i < results.length; i++) {
                        friends.push({
                            imageURL: results[i].get('toUser').get('pic'),
                            friendRequestId: results[i].id,
                            username: results[i].get('toUser').get('username'),
                            userId: results[i].get('toUser').id

                        });

                    }
                    var select = document.getElementById("FriendsPending");
                    $.each(friends, function(i, v) {
                        var opt = v.username;
                        var el = document.createElement("option");
                        el.textContent = opt;
                        el.value = opt;
                        select.appendChild(el);
                    })
                    _.each(friends, function(item) {
                        var wrapper = $('<div class="wrapper"' + ' data-friend-request-id="' + item.friendRequestId + '"' + ' data-to-user-id="' + item.userId + '"></div>');
                        wrapper.append('<img class="images responsive-image BadgeImgOutline" src="' + item.imageURL + '" />');
                        wrapper.append('<div>' + item.username + '</div>');
                        wrapper.append('<div type="button" class="button button-blue">' + 'Accept Friend' + '</div>');
                        wrapper.append('<div type="button" class="button button-yellow">' + 'Decline' + '</div>');
                        $('#containerFriendsPending').append(wrapper);
                    });
                },
                error: function(error) {
                    alert("Error: " + error.code + " " + error.message);
                }
            });
        }
         /////////Filter Two///////////////////
        function FriendsConnected() {
            $('#containerFriendsRejected').empty();
            $('#containerFriendsPending').empty();
            $('#containerFriendsRequestSent').empty();
            var currentUser = Parse.User.current();
            var FriendRequest = Parse.Object.extend("FriendRequest");
            var query = new Parse.Query(FriendRequest);
            query.include('toUser');
            query.include('SentTo');
            query.include("myBadge");
            query.equalTo("fromUser", currentUser);
            query.equalTo("status", "Connected");
            query.find({
                success: function(results) {
                    var friends = [];
                    for (var i = 0; i < results.length; i++) {
                        friends.push({
                            imageURL: results[i].get('toUser').get('pic'),
                            friendRequestId: results[i].id,
                            username: results[i].get('toUser').get('username'),
                            userId: results[i].get('toUser').id

                        });

                    }
                    var select = document.getElementById("FriendsConnected");
                    $.each(friends, function(i, v) {
                        var opt = v.username;
                        var el = document.createElement("option");
                        el.textContent = opt;
                        el.value = opt;
                        select.appendChild(el);
                    })

                    _.each(friends, function(item) {
                        var wrapper = $('<div class="wrapper"' + ' data-friend-request-id="' + item.friendRequestId + '"' + ' data-to-user-id="' + item.userId + '"></div>');
                        wrapper.append('<img class="images responsive-image BadgeImgOutline" src="' + item.imageURL + '" />');
                        wrapper.append('<div>' + item.username + '</div>');
                        $('#containerFriendsConnected').append(wrapper);
                    });
                },
                error: function(error) {
                    alert("Error: " + error.code + " " + error.message);
                }
            });
        }
         //////////////////////////Takes results from functions and adds them to div to show///////////////////////////////
        $(document).ready(function() {
            $('#FriendsPending').click(function(e) {
                FriendsPending();
            });

            $('#FriendsConnected').click(function(e) {
                FriendsConnected();
            });

        });
    </script>

对于初学者,您可以使用.append()appendTo()函数将option添加到您的选择框中。

因为有多个源,我可能会绑定一个类来告诉我如何过滤它。我将创建我的传播函数来添加一个新选项,并将其过滤器类型/源作为一个类包含:

    function prop1(){
       $("<option/>")
         .val('The Value')
         .html('Display Text')
         .addClass('filter-prop1')
         .appendTo('select#FriendsConnected');
    }

现在我有了第二个做同样事情的函数,只是将绑定的类名更改为filter-prop2:

    function prop2(){
       $("<option/>")
         .val('The Value')
         .html('Display Text')
         .addClass('filter-prop2')
         .appendTo('select#FriendsConnected');
    }

现在你可以显示/隐藏基于其类型的选项,像这样:

 $("select#FriendsConnected option.filter-prop2").hide();
 $("select#FriendsConnected option.filter-prop1").show();

这将隐藏第二次传播的所有选项,只显示第一次传播的选项,以此类推,但这只是一个示例。

如何回答这个问题的全部细节可以在这里找到。

如何绑定多个函数结果作为选项选择在一个表单选择弹出框?

代码如下

HTML

<!--Drop down filter box that should show each option returned from functions below-->
    <form>
        <select name="huge" class="btn-group select select-block mbl select-multiple" id="s_Friends">
            <option value="0">Filter Friends/Requests</option>
            <option value="f_connected">Connected Friends</option>
            <option value="f_requests">Friend Requests</option>
        </select>
    </form>
    <!--Displays content/images on page after filter-->
    <div id="container">
        <div id="userimgs" class="responsive-image"></div>
    </div>
    <div id="containerFriendsPending"></div>
    <div id="containerFriendsConnected"></div>
    <div id="container">
        <div id="badgeimgs"></div>
    </div>

JS

Parse.initialize("ccccc", "xxxxx");
    Parse.User.logIn("dave", "delvedia", {
        success: function(user) {
            console.log("Logged in!");
        }
    });

         /////////Filter One///////////////////
        function FriendsPending() {
            $('#containerFriends').empty();
            $('#containerFriendsRejected').empty();
            $('#containerFriendsRequestSent').empty();
            $('#containerFriendsConnected').empty();

            var currentUser = Parse.User.current();
            var FriendRequest = Parse.Object.extend("FriendRequest");
            var query = new Parse.Query(FriendRequest);
            query.include('toUser');
            query.include('SentTo');
            query.include("myBadge");
            query.equalTo("fromUser", currentUser);
            query.equalTo("status", "Pending");
            query.find({
                success: function(results) {
                    var friends = [];
                    for (var i = 0; i < results.length; i++) {
                        friends.push({
                            imageURL: results[i].get('toUser').get('pic'),
                            friendRequestId: results[i].id,
                            username: results[i].get('toUser').get('username'),
                            userId: results[i].get('toUser').id

                        });

                    }
                    _.each(friends, function(item) {
                        var wrapper = $('<div class="wrapper"' + ' data-friend-request-id="' + item.friendRequestId + '"' + ' data-to-user-id="' + item.userId + '"></div>');
                        wrapper.append('<img class="images responsive-image BadgeImgOutline" src="' + item.imageURL + '" />');
                        wrapper.append('<div>' + item.username + '</div>');
                        wrapper.append('<div type="button" class="button button-blue">' + 'Accept Friend' + '</div>');
                        wrapper.append('<div type="button" class="button button-yellow">' + 'Decline' + '</div>');
                        $('#containerFriendsPending').append(wrapper);
                    });
                },
                error: function(error) {
                    alert("Error: " + error.code + " " + error.message);
                }
            });
        }
         /////////Filter Two///////////////////
        function FriendsConnected() {
            $('#containerFriendsRejected').empty();
            $('#containerFriendsPending').empty();
            $('#containerFriendsRequestSent').empty();
            var currentUser = Parse.User.current();
            var FriendRequest = Parse.Object.extend("FriendRequest");
            var query = new Parse.Query(FriendRequest);
            query.include('toUser');
            query.include('SentTo');
            query.include("myBadge");
            query.equalTo("fromUser", currentUser);
            query.equalTo("status", "Connected");
            query.find({
                success: function(results) {
                    var friends = [];
                    for (var i = 0; i < results.length; i++) {
                        friends.push({
                            imageURL: results[i].get('toUser').get('pic'),
                            friendRequestId: results[i].id,
                            username: results[i].get('toUser').get('username'),
                            userId: results[i].get('toUser').id

                        });

                    }
                    _.each(friends, function(item) {
                        var wrapper = $('<div class="wrapper"' + ' data-friend-request-id="' + item.friendRequestId + '"' + ' data-to-user-id="' + item.userId + '"></div>');
                        wrapper.append('<img class="images responsive-image BadgeImgOutline" src="' + item.imageURL + '" />');
                        wrapper.append('<div>' + item.username + '</div>');
                        $('#containerFriendsConnected').append(wrapper);
                    });
                },
                error: function(error) {
                    alert("Error: " + error.code + " " + error.message);
                }
            });
        }
         //////////////////////////Takes results from functions and adds them to div to show///////////////////////////////
        $(document).ready(function() {
            $('select#s_Friends').change(function(){
            var selection = $(this).val();
            if(selection=='f_connected')
            FriendsConnected();
            else if(selection=='f_requests')
            FriendsPending();
            });