如何使用jQuery选择第一个父DIV?

Ada*_*dam 94 javascript jquery css-selectors

var classes = $(this).attr('class').split(' '); // this gets the current element classes

var classes = $(this).parent().attr('class').split(' '); // this gets the parent classes.
Run Code Online (Sandbox Code Playgroud)

上述情况中的父母是ankor.

如果我想获得$(this)的第一个父DIV代码是什么样的?

var classes = $(this).div:parent().attr('class').split(' '); // just a quick try.
Run Code Online (Sandbox Code Playgroud)

*基本上我想得到$(this)的第一个父DIV的类.

谢谢

She*_*hef 157

使用.closest()向上遍历DOM树到指定的选择.

var classes = $(this).parent().closest('div').attr('class').split(' '); // this gets the parent classes.
Run Code Online (Sandbox Code Playgroud)

  • `parent("div")`遍历并返回所有父div,你应该使用`.eq(0)`之后确保它只返回你想要的那个 (10认同)
  • 请记住,这是获得更好的性能使用'.家长("DIV")EQ(0)` - 使用的jQuery遵循的钱包CSS选择器来过滤出的第一个元素会给你一个轻微的性能提升 - 看[jQuery:eq doc]上的"附加说明"部分(http://api.jquery.com/eq-selector/) (3认同)

Tat*_*nen 39

使用.closest(),获取与给定选择器匹配的第一个祖先元素'div':

var classes = $(this).closest('div').attr('class').split(' ');
Run Code Online (Sandbox Code Playgroud)

编辑:

正如@Shef指出的那样,.closest()如果碰巧也是DIV ,它将返回当前元素.要考虑到这一点,.parent()请先使用:

var classes = $(this).parent().closest('div').attr('class').split(' ');
Run Code Online (Sandbox Code Playgroud)

  • 如果`$(this)`是DIV元素,`.closest()`将匹配自身. (5认同)
  • 你可以简单地使用`.parents("div").eq(0)` (3认同)

Esb*_*ben 9

如果是div,则获取父级.然后它上课.

var div = $(this).parent("div");
var _class = div.attr("class");
Run Code Online (Sandbox Code Playgroud)

  • 这只适用于div是直接父级的情况 (3认同)

Jun*_*ood 5

两个最好的选择是

$(this).parent("div:first")

$(this).parent().closest('div')
Run Code Online (Sandbox Code Playgroud)

当然你可以通过以下方式找到类属性

$(this).parent("div:first").attr("class")

$(this).parent().closest('div').attr("class")
Run Code Online (Sandbox Code Playgroud)

以及对于你

$(this).parent("div:first").attr("class").split(' ')
$(this).parent().closest('div').attr("class").split(' ')
Run Code Online (Sandbox Code Playgroud)