Jquery 在DOM更改后查找元素

Jquery 在DOM更改后查找元素,jquery,html,dom,Jquery,Html,Dom,我有一个按美国各州分组的地址列表。州名称为H4标记,地址为每个州一个无序列表中的li标记。有些地址是特殊的,并用类名“partner”指定 我在页面上有一个复选框,选中后,将通过jQuery关闭和打开所有合作伙伴位置。如果某个特定州的所有位置都被隐藏,我希望该州的H4标记也被隐藏。我的想法是在DOM中搜索所有没有li子容器的父容器,然后隐藏它们,但是我不知道如何让jQuery找到它们,因为DOM已经改变了。也许我完全错了 javascript已尝试: var partner=$('.partn

我有一个按美国各州分组的地址列表。州名称为H4标记,地址为每个州一个无序列表中的li标记。有些地址是特殊的,并用类名“partner”指定

我在页面上有一个复选框,选中后,将通过jQuery关闭和打开所有合作伙伴位置。如果某个特定州的所有位置都被隐藏,我希望该州的H4标记也被隐藏。我的想法是在DOM中搜索所有没有li子容器的父容器,然后隐藏它们,但是我不知道如何让jQuery找到它们,因为DOM已经改变了。也许我完全错了

javascript
已尝试:

var partner=$('.partner');
$(“#包括合作伙伴位置”)。更改(函数(){
如果(选中此项){
合伙人:fadeIn(500);
}否则{
合伙人。淡出(500);
}
});
正文{
字体系列:helvetica;
颜色:#333;
}
保险商实验室{
填充:0;
列表样式:无;
}
.clearfix:之后{
内容:“;
显示:表格;
明确:两者皆有;
}
#地址目录{
字体大小:13px;
}
li.location-name{
浮动:左;
显示:块;
宽度:250px;
右边距:10px;
边缘底部:20px;
}
.地图{
填充:3px 8px 6px 8px;
边缘顶部:5px;
-webkit边界半径:4px;
-moz边界半径:4px;
边界半径:4px;
文字装饰:无;
背景色:#中交;
颜色:#333333;
显示:内联块;
}
.合伙人:之后{
内容:“*”;
}

包括合作伙伴地点

*合作伙伴位置

亚利桑那州
    凤凰城
    东印度学校路817号
    亚利桑那州凤凰城85014
  • Tempe
    西大学路1775号
    亚利桑那州坦佩85281
  • 图森
    东六街234号
    亚利桑那州图森市,邮编85705
    图森
    百老汇大道东2903号。
    亚利桑那州图森市,邮编85716
佛罗里达州
    珊瑚山墙
    大学道275号
    珊瑚山墙,佛罗里达州33134
    劳德代尔堡
    安德鲁斯大街801号。
    佛罗里达州劳德代尔堡33311
    梅特兰

  • 坎迪斯大道160号
    佛罗里达州梅特兰32751
  • 迈阿密
    7451西南第50台
    迈阿密,佛罗里达州33155
阿肯色州
    本顿维尔
    莫伯里巷3204号
    本顿维尔,AR 72712
    康威
    博物馆道1101号
    康威,AR 72032
    费耶特维尔
    20个乡镇
    费耶特维尔,AR 72703
    史密斯堡
    托森大道906号
    史密斯堡,AR 72901
  • 小石城
    815主楼
    小石城,AR 72201
您可以使用
.filter()
.get()
.every()
.promise()
.prev()
来过滤
ul
元素,其中每个
li
子元素的
样式
显示
都等于
“无”
当所有
.partner
元素完成动画时;对过滤后的
ul
元素的上一个元素同级
h4
调用
.fadeOut()

var partner=$('.partner');
$(“#包括合作伙伴位置”)。更改(函数(){
如果(选中此项){
合伙人:fadeIn(500);
美元(“h4”)。法代因(500)
}否则{
var-ul;
伙伴淡出(500,函数(){
ul=$(“ul”).filter(函数(i,el){
返回$(“li”,this).get().every(函数(elem){
返回elem.style.display==“无”
})
})
})
partner.promise().then(function()){
ul.prev(“h4”).淡出()
})
}
});
正文{
字体系列:helvetica;
颜色:#333;
}
保险商实验室{
填充:0;
列表样式:无;
}
.clearfix:之后{
内容:“;
显示:表格;
明确:两者皆有;
}
#地址目录{
字体大小:13px;
}
li.location-name{
浮动:左;
显示:块;
宽度:250px;
右边距:10px;
边缘底部:20px;
}
.地图{
填充:3px 8px 6px 8px;
边缘顶部:5px;
-webkit边界半径:4px;
-moz边界半径:4px;
边界半径:4px;
文字装饰:无;
背景色:#中交;
颜色:#333333;
显示:内联块;
}
.合伙人:之后{
内容:“*”;
}

包括合作伙伴地点

*合作伙伴位置

亚利桑那州
    凤凰城
    东印度学校路817号
    亚利桑那州凤凰城85014
  • Tempe
    西大学路1775号
    亚利桑那州坦佩85281
  • 图森
    东六街234号
    亚利桑那州图森市,邮编85705
    图森
    百老汇大道东2903号。
    亚利桑那州图森市,邮编85716
佛罗里达州
    $('#include-partner-locations').change(function() { if (this.checked) { $("h4").fadeIn(500); $(".partner").fadeIn(500); } else { $("section").each(function(index) { $(".partner").fadeOut(500); if ($(this).children("ul").children(".location-name").length == $(this).children("ul").children(".partner").length) { $(this).children("h4").fadeOut(500); } }); } });