我找不到与Jquery最接近的标签。
标签的ID与输入的ID不同:
$(document).delegate("input[type=text]", "keyup", function() {
if (this.className == 'other-val') {
$label = $('label[for="' + this.id + '"]');
if ($label.length > 0) {
console.log('ok')
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label for="radio-group-1548153603981-other">Other
<input type="text" id="radio-group-1548153603981-other-value" class="other-val user-success" style="display: inline-block;">
</label>
希望有人可以帮助我
答案 0 :(得分:2)
由于该元素具有多个类名,因此必须使用includes
而不是=
运算符。
输入的ID也为radio-group-1548153603981-other-value
,并且您错过了标签中的单词value
,并且HTML是由第三方软件生成的,因此我使用.replace
来省略 -value 来自输入ID。
$(document).delegate( "input[type=text]", "keyup", function() {
if(this.className.includes('other-val')){
$label = $('label[for="'+ this.id.replace("-value","") +'"]');
if ($label.length > 0 ) {
console.log('ok')
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label for="radio-group-1548153603981-other">Other
<input type="text" id="radio-group-1548153603981-other-value" class="other-val user-success" style="display: inline-block;">
</label>
答案 1 :(得分:1)
使用on
代替delegate
,使用大多数jQuery功能,如果使用jQuery,则不要结合使用纯DOM javascript。
我看到标签是input
的父标签,因此请使用closest方法。
$(document).on( "keyup", "input[type='text']", function() {
if($(this).hasClass('other-val')) {
$label = $(this).closest("label");
if ($label.length > 0 ) {
console.log('ok')
}
}
});
答案 2 :(得分:1)
<label for="radio-group-1548153603981-other">
使用jquery获取标签上方的可能方法。
$('label[for$=other]');
-“ $ =”忽略“ other”之前的所有文本,并找到控件$(this).siblings('label[for$=other]');
-在其任何同级元素的回调函数中。$('label[for=radio-group-1548153603981-other]')
答案 3 :(得分:-1)
您的标记让我有些困惑。试试这个:
HTML标记示例:
<div>
<label>some text</label>
<input type="text">
</div>
jQuery选择器:
let $input = $('input[type="text"]');
let $label = $input.parent().find('label');
标签不必围绕输入字段