我需要得到主culpritClass
div类,它在输入内容之后保存所有内容并按下enter并将其作为字符串放入变量中。
我似乎无法上课。
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>
我尝试了以下JS,但我得到了undefined
。
$('.chat_text').keypress(function(e) {
if (e.keyCode == '13') {
var ru = $(this).prev().parent().attr('class');
alert(ru);
}
});
var ru
是重要的一条线。
答案 0 :(得分:7)
var ru = $(this).parent().parent().parent().attr('class');
应该做的伎俩。即使这看起来不是最好的解决方案,但它是最简单的一个。除非有一个函数将参数传递给一个传递数字的函数,例如ancestor(3)
将在DOM中向上移动三级并返回该元素。
但如果您只是想找到班级本身,请尝试最接近的班级。
var ru = $(this).closest('.culpritClass');
答案 1 :(得分:4)
试试这个:使用.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');
虽然有很多方法可以做到这一点,但您可以选择自己喜欢的方式:)
答案 2 :(得分:1)
由于您正在重用.culpritClass
,因此为了精确起见并避免多次parent()
调用,请使用parents()
方法,并将该元素的类作为其选择器:>
$('.chat_text').keypress(function(e) {
if (e.keyCode == '13') {
alert($(this).parents('.culpritClass').attr('class'));
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3>Place the cursor below and press ENTER</h3>
<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>
答案 3 :(得分:0)
试试这个,
$(this).closest('selector').find('div:first').attr('class');
如果您想要parents
.culpritClass
第一个元素,请尝试使用
$(this).closest('.culpritClass').find('div:first').attr('class');
答案 4 :(得分:0)
您也可以使用
var ru = $(this).parent('form').parent('div').parent('div').attr('class');
而不是
var ru = $(this).prev().parent().attr('class');
答案 5 :(得分:0)
我会选择$(this).parents('.culpritClass')
或者如果你不“知道”这门课程,但你知道它确实有3位家长,那么$(this).parent().parent().parent()
你的JS中的问题是textarea没有prev()
,你也应该改变它parent()
它会起作用。
答案 6 :(得分:0)
$(document).ready( function() {
$('.chat_text').keypress(function(e) {
if (e.keyCode == '13') {
var ru = $(this).closest("div").parent();
alert($(ru).html());
}
});
});