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