I need to get the main culpritClass
div class that holds everything after something is typed and enter is pressed and put it into a variable as a string.
I can't seem to get the class.
HTML:
<div class="culpritClass">
<div class="inner" style="display: block;">
<div class="inner_chat"></div>
<form>
<textarea class="chat_text"></textarea>
</form>
</div><a class="culpritClass" href="#">culprit</a>
</div>
I tried the following JS but I get undefined
.
$('.chat_text').keypress(function(e) {
if (e.keyCode == '13') {
var ru = $(this).prev().parent().attr('class');
alert(ru);
}
});
The var ru
is the line that matters.
Try this: use .closest()
You can either do like this:
or like this:
Though there are so many ways to do this, you can select the way you like :)
Demo
You can also use
instead of
should do the trick. Even though this doesn't look like it is the neatest solution, it is the most straightforward one imo. Unless there's a function to pass an argument to a function which travels a number up, e.g.
ancestor(3)
which would travel three levels up in the DOM and return that element.But if you are just trying to find the class itself, try closest.
I would go with
$(this).parents('.culpritClass')
or if you don't "know" the class, but you know that it has 3 parents exactly, then$(this).parent().parent().parent()
The problem in your JS is that the textarea has no
prev()
, you should change that tooparent()
and it will work.Since you are reusing the
.culpritClass
, for the sake of precision and to avoid multipleparent()
calls, use theparents()
method with the class of that element as its selector:});