如何获得最顶级的div父类

我需要得到主要的culpritClass div类,它在输入内容之后保存所有内容并按下enter并将其作为字符串放入变量中。

我似乎无法上课。

HTML:

  

我尝试了以下JS,但我得到了undefined

 $('.chat_text').keypress(function(e) { if (e.keyCode == '13') { var ru = $(this).prev().parent().attr('class'); alert(ru); } }); 

var ru是重要的线。

 var ru = $(this).parent().parent().parent().attr('class'); 

应该做的伎俩。 即使这看起来不是最好的解决方案,但它是最直接的一个。 除非有一个函数将参数传递给一个向上移动数字的函数,例如ancestor(3)将在DOM中向上移动三个级别并返回该元素。

但如果你只是想找到class级本身,那就试试最近的。

 var ru = $(this).closest('.culpritClass'); 

试试这个:使用.closest()

 $('.chat_text').keypress(function(e) { if (e.keyCode == '13') { var ru = $(this).closest('.culpritClass').attr('class'); alert(ru); } }); 

你可以这样做:

 var ru = $(this).parents().find('div').eq(0).attr('class'); 

或者像这样:

 var ru = $(this).parents().find('div:first').attr('class'); 

虽然有很多方法可以做到这一点,你可以选择你喜欢的方式:)

演示

试试这个,

 $(this).closest('selector').find('div:first').attr('class'); 

如果你想要parents .culpritClass第一个元素然后尝试这个,

  $(this).closest('.culpritClass').find('div:first').attr('class'); 

你也可以使用

 var ru = $(this).parent('form').parent('div').parent('div').attr('class'); 

代替

 var ru = $(this).prev().parent().attr('class'); 

我会选择$(this).parents('.culpritClass')或者如果你不“知道”这个类,但你知道它有3个父母,那么$(this).parent().parent().parent()

你的JS中的问题是textarea没有prev() ,你应该更改那个parent() ,它会工作。

 $(document).ready( function() { $('.chat_text').keypress(function(e) { if (e.keyCode == '13') { var ru = $(this).closest("div").parent(); alert($(ru).html()); } }); 

});

由于重复使用.culpritClass ,为了精确起见并避免多个parent()调用,请使用parents()方法,并将该元素的类作为其选择器:

 $('.chat_text').keypress(function(e) { if (e.keyCode == '13') { alert($(this).parents('.culpritClass').attr('class')); } }); 
  

Place the cursor below and press ENTER