Javascript JQuery将每个同级传递给函数
我在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
.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]'));
});
});
});