Jquery 基于子类或同级类获取父元素或上一个元素
假设我有三种不同类型的产品HTML,我只想为那些有子元素或兄弟元素的产品选择Jquery 基于子类或同级类获取父元素或上一个元素,jquery,Jquery,假设我有三种不同类型的产品HTML,我只想为那些有子元素或兄弟元素的产品选择product block元素,而输入元素有一个classmySelector 类型A中包含带有“mySelector”的元素 类型B中或下面没有元素“mySelector”,因此我们不想选择它 类型C后面有元素“mySelector” 目标是选择类型A和C的产品块,其子级或兄弟级为mySelector 产品块类型A <div class="A B C"> <a href
product block
元素,而输入元素有一个classmySelector
- 类型A中包含带有“mySelector”的元素
- 类型B中或下面没有元素“mySelector”,因此我们不想选择它
- 类型C后面有元素“mySelector”
,其子级或兄弟级为mySelector
产品块类型A
<div class="A B C">
<a href="#"></a>
<input type="hidden" class="mySelector">
</div>
另一种方法是使用
jQuery('.mySelector').parent()
。但是,如果mySelector是兄弟姐妹,我就无法选择C型。我按照@freedomn-m的建议解决了这个问题
let elmsa = jQuery('.mySelector').parent()
.filter(function () {
if (jQuery(this).hasClass('A')) {
return this;
}
});
let elmsb = jQuery('.mySelector').prev()
.filter(function () {
if (jQuery(this).hasClass('X')) {
return this;
}
});
let elms = jQuery.merge(elmsa, elmsb);
使用两者(获取所有父项和所有上一项),然后结合
.add()
-请参阅(不打算重复)我刚刚遇到了同一个。谢谢
<div class="X Y Z">
<a href="#"></a>
</div>
<input type="hidden" class="mySelector">
jQuery('.mySelector')
.filter(function () {
if (jQuery(this).prev().hasClass('Z')) {
return jQuery(this).prev();
}
})
let elmsa = jQuery('.mySelector').parent()
.filter(function () {
if (jQuery(this).hasClass('A')) {
return this;
}
});
let elmsb = jQuery('.mySelector').prev()
.filter(function () {
if (jQuery(this).hasClass('X')) {
return this;
}
});
let elms = jQuery.merge(elmsa, elmsb);