Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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 JQuery将每个同级传递给函数_Javascript_Jquery_List_Parent Child_Siblings - Fatal编程技术网

Javascript JQuery将每个同级传递给函数

Javascript JQuery将每个同级传递给函数,javascript,jquery,list,parent-child,siblings,Javascript,Jquery,List,Parent Child,Siblings,我在JQuery中的.sibbines().each()方面遇到问题。我有一个嵌套的复选框列表。一个功能是选中一个复选框,它还会选中所有具有相同值的对应复选框。这很有效。然后,如果选中父项复选框,则将选中所有子项(兄弟项)。这也行得通 我遇到的问题是,选中一个父复选框,然后在每个子(兄弟)上调用一个函数来选中其他具有相同值的复选框。基本上是将每个同级传递给checkAllSameUser函数 以下是HTML: <ul> <li><input type='checkb

我在JQuery中的
.sibbines().each()
方面遇到问题。我有一个嵌套的复选框列表。一个功能是选中一个复选框,它还会选中所有具有相同值的对应复选框。这很有效。然后,如果选中父项复选框,则将选中所有子项(兄弟项)。这也行得通

我遇到的问题是,选中一个父复选框,然后在每个子(兄弟)上调用一个函数来选中其他具有相同值的复选框。基本上是将每个同级传递给
checkAllSameUser
函数

以下是HTML:

<ul>
<li><input type='checkbox' class="build-checkbox" value="1"  /> 1</li>
<li><input type='checkbox' class="build-checkbox" value="2"  /> 2
  <ul>
    <li><input type='checkbox' class="build-checkbox" value="3"  /> 3</li>
  </ul>
</li>
<li><input type='checkbox' class="build-checkbox" value="4"  /> 4
  <ul>
    <li><input type='checkbox' class="build-checkbox" value="3"  /> 3</li>
     <li><input type='checkbox' class="build-checkbox" value="5"  /> 5</li>
  </ul>
</li>
<li><input type='checkbox' class="build-checkbox" value="6"  /> 6
  <ul>
    <li><input type='checkbox' class="build-checkbox" value="5"  /> 5</li>
     <li><input type='checkbox' class="build-checkbox" value="7"  /> 7</li>
  </ul>
</li>
JSFiddle:

基本上,如果您选中“4”复选框,那么页面上的所有“3”和“5”复选框也将被选中(遵循单独点击“3”或“5”的相同逻辑)。“我将检查页面上的每个子项以及每个子项的每个匹配值”


我很确定我没有理解
。每个
函数,也没有正确地传递每个同级对象。如果您有任何意见,我将不胜感激。。。JQuery和Javascript不是我的强项。

您在寻找这样的逻辑吗

$(“.build checkbox”).change(函数(){
选中AllSameuser($(此));
});
函数checkAllSameUser(用户){
var val=user.val();
如果($(user).is(“:checked”)){
$(“:checkbox[value='“+val+']”)prop(“checked”,true);
}否则{
$(“:checkbox[value='“+val+']”)prop(“checked”,false);
}
};
$(函数(){
$(“输入[type='checkbox']”)。更改(函数(){
var val=$(this.val();
$(this.sides('ul').find('input[type='checkbox']).prop('checked',this.checked));
$(this).sides('ul').find('input[type='checkbox'])。each(function(){
选中AllSameuser($(此));
});
});
});
liul{
左侧填充:25px;
边界:无;
显示:块;
}
保险商实验室{
边框:2件纯蓝;
填充物:5px;
保证金:5px;
显示:内联块;
列表样式类型:无;
}

  • 一,
  • 2.
    • 三,
  • 4.
    • 三,
    • 五,
  • 6.
    • 五,
    • 七,

对于每个ul,在ul上调用checkAllSameUser(而不是复选框)-这就是您的代码所做的。在each函数中,
指的是当前eached元素,它是一个ul。您可以在
$(this.find('input[type=checkbox])
上选中AllSameuser,但每个ul有一个以上的复选框。也许你可以用
li
元素来代替。@jamesbingo!如果你想回答这个问题,我会接受的。我找不到关于每个函数的很多信息,因此它可能对未来的搜索者有所帮助。@James实际上,关于“每个ul有多个复选框”的说法是对的。它似乎只会经过第一个“兄弟”。我已经更新了JQuery和JSFiddle。我似乎不能在li元素上这么做。。。我必须要和另一个兄弟姐妹一起生活吗?或者这是可能的吗?我不完全确定你想要哪个孩子复选框。您的示例有一个简单的两层结构,但可能会有更多的层,并且按照预期工作的代码可能更难定义。
    $(".build-checkbox").change(function () {
    checkAllSameUser($(this));
});

function checkAllSameUser(user) {
    var val = user.val();
    if ($(user).is(":checked")) {

        $(":checkbox[value='" + val + "']").prop("checked", true);
    }
    else {
        $(":checkbox[value='" + val + "']").prop("checked", false);
    }
};

$(function () {
    $("input[type='checkbox']").change(function () {
        $(this).siblings('ul')
             .find("input[type='checkbox']")
             .prop('checked', this.checked);
        $(this).siblings('ul').each(function () {
            checkAllSameUser($(this).find('input[type=checkbox]'));
        });
    });
});