Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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
Jquery 基于子类或同级类获取父元素或上一个元素_Jquery - Fatal编程技术网

Jquery 基于子类或同级类获取父元素或上一个元素

Jquery 基于子类或同级类获取父元素或上一个元素,jquery,Jquery,假设我有三种不同类型的产品HTML,我只想为那些有子元素或兄弟元素的产品选择product block元素,而输入元素有一个classmySelector 类型A中包含带有“mySelector”的元素 类型B中或下面没有元素“mySelector”,因此我们不想选择它 类型C后面有元素“mySelector” 目标是选择类型A和C的产品块,其子级或兄弟级为mySelector 产品块类型A <div class="A B C"> <a href

假设我有三种不同类型的产品HTML,我只想为那些有子元素或兄弟元素的产品选择
product block
元素,而输入元素有一个class
mySelector

  • 类型A中包含带有“mySelector”的元素
  • 类型B中或下面没有元素“mySelector”,因此我们不想选择它
  • 类型C后面有元素“mySelector”
目标是选择类型A和C的产品块
,其子级或兄弟级为
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);