Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在试图隐藏除一个div之外的每个div时执行If循环_Javascript_Jquery_Facebook - Fatal编程技术网

Javascript 在试图隐藏除一个div之外的每个div时执行If循环

Javascript 在试图隐藏除一个div之外的每个div时执行If循环,javascript,jquery,facebook,Javascript,Jquery,Facebook,我正在创建一个facebook风格的活动邀请脚本。我已经让好友显示在我的模式等,我的问题是,当你选择一个类别时,类别按钮调用的脚本应该隐藏group_friends容器中的所有div,除了当前id被查询的div。这是我正在处理的功能: function get_group_friends(element){ var group_id=($(element).attr("id")); console.log((($("div[id^="+group_id+"]")).children()).l

我正在创建一个facebook风格的活动邀请脚本。我已经让好友显示在我的模式等,我的问题是,当你选择一个类别时,类别按钮调用的脚本应该隐藏group_friends容器中的所有div,除了当前id被查询的div。这是我正在处理的功能:

function get_group_friends(element){
var group_id=($(element).attr("id")); 

console.log((($("div[id^="+group_id+"]")).children()).length);

if(((($(".div[id^="+group_id+"]").children()).length)) == 0)
     {

      $("#container_group_friends").children().not($("div[id^="+group_id+"]")).hide();
       $("#container_all_friends").hide();

  var query = "SELECT uid, name, pic_square FROM user WHERE uid IN(SELECT uid FROM group_member WHERE gid = "+($(element).attr("id"))+" AND uid IN(SELECT uid2 FROM friend WHERE uid1=me()))"; 
FB.api({access_token: accessToken, method:'fql.query', query: query}, function(response_group_friend)
{
   var i=0;
   var result_group_friend="";
   for(i=0; i<response_group_friend.length; i++)
   {
      result_group_friend+="<div class='fbfriends' id='"+response_group_friend[i].uid+"' ><div class='user float_left'><img src='"+response_group_friend[i].pic_square+"'/><div class='tick'></div></div><div class='friend_name float_left'>"+response_group_friend[i].name+"</div></div>";

   }   $("div[id^="+group_id+"]").append(result_group_friend);

  //    $("#container_group_friends").append($("div[id^="+group_id+"]"));
 });

}
 else
{
        ($("#container_group_friends").children().not($("div[id^="+group_id+"]"))).hide();
      $("#container_all_friends").hide();
 }

}

问题是,当我单击另一个类别时,容器中的所有内容都是不可见的,即使是查询特定id的div。我可能没有像我应该的那样从逻辑上看待这个问题。任何帮助都会很好。谢谢。

首先,代码的第四行有一个不需要的点。选择器内“div”前面的一个。您确定在那里使用的div文本就是类名吗

如果$.div[id^=+group_id+].children.length==0 如果$div[id^=+group_id+].children.length==0

第二,但我不是100%肯定。您可能错过了此处的double not声明:

$container\u group\u friends.children.not$div[*id^=+group\u id+].hide

我将此表达式转换为单个选择器:

$container\u group\u friends>div:not+group\u id+.hide


通过几个假设,代码应简化如下:

function get_group_friends(element) {
    var group_id = $(element).attr("id");
    var $groupContainer = $("div[id^=" + group_id + "]");
    $("#container_group_friends").children().not($groupContainer).hide();
    $("#container_all_friends").hide();
    //console.log($groupContainer.children().length);
    if( $groupContainer.children().length == 0 ) {
        var query = "SELECT uid, name, pic_square FROM user WHERE uid IN(SELECT uid FROM group_member WHERE gid = " + group_id + " AND uid IN(SELECT uid2 FROM friend WHERE uid1=me()))";
        FB.api({access_token: accessToken, method:'fql.query', query: query}, function(response_group_friend) {
            $.each(response_group_friend, function(i, f) {
                $groupContainer.append("<div class='fbfriends' id='" + f.uid + "' ><div class='user float_left'><img src='" + f.pic_square + "'/><div class='tick'></div></div><div class='friend_name float_left'>" + f.name + "</div></div>");
            });
        });
    }
}

我们需要查看您的HTML以了解jQuery最能处理它的是什么。if$.div[id^=+group_id+]。childrent.length==0->if!$。div[id^=+group_id+].children.length这是为我做的。必须将第3行更改为您建议的内容,以便单击另一个类别将进行相应的处理。谢谢!
var $groupContainer = $("div[id^=" + group_id + "]").show();