我有以下情况:
<div class="control-group">
<label class="control-label" for="first_name">
First name
</label>
<div class="controls">
<input id="first_name" type="text" value="rybka">
</div>
</div>
我有输入的ID。我想用&#34; control-group&#34;添加到div的类。具有指定id的类和输入。如果完美的方式怎么办?
编辑:
感谢我使用该解决方案的所有答案:
$(".control-group:has(#specificId)").addClass('yourClass');
答案 0 :(得分:9)
尝试在此上下文中使用:has()
选择器,
$(".control-group:has(#specificId)").addClass('yourClass');
或者您也可以使用.closest()
$("#specificId").closest(".control-group").addClass('yourClass');
答案 1 :(得分:4)
使用.parents()
获取所有父元素,使用.addClass()
将类添加到元素。试试这个:
$("#first_name").parents(".control-group").addClass("testClass");
<强> DEMO 强>
答案 2 :(得分:1)
我为你的问题创建了jsfiddle,你应该最接近代替有。 最近的工作速度更快,然后 方法查看代码并为其工作jsfiddle。
代码: -
$(document).ready(function() {
console.time("has")
$(".control-group:has(#first_name)").addClass('yourClass');
console.timeEnd("has")
console.time("closest")
$("#specificId").closest(".control-group").addClass('yourClass');
console.timeEnd("closest")
});
工作jsfiddle示例: - http://jsfiddle.net/dwxmjkb3/13/
在控制台上查看结果。
感谢
答案 3 :(得分:0)
没有完美的方法,但有许多方法可以做到这一点。我假设您要添加输入中添加的类。
$('input').change(function () {
$(this).parent().parent().addClass('someclass');
});
这将一直回到顶级父级,并将添加该类。