给予一个元素,我需要找到最近的元素,而不是label
并且不是一个具有radio
或checkbox
<类的元素/ p>
这就是我所做的
$parent = element.closest('div');
if($parent.hasClass('checkbox') || $parent.hasClass('radio'))
{
$parent = $parent.parent();
}
error.appendTo($parent);
上述代码大部分都有效,只是它只查找div
而不是任何元素。
此外,是否有更短的方法来编写此代码,我可以避免条件语句?也许,使用find()
方法进行搜索,但不确定如何使用它。
以下是我要搜索的html代码
<div class="form-group has-error">
<label for="gender" class="col-md-2 control-label">Gender</label>
<div class="col-md-10">
<div class="radio">
<label for="gender_">
<input id="gender_" required="1" name="gender" value="" aria-required="true" aria-describedby="gender-error" type="radio">
Please select your gender
</label>
</div>
<div class="radio">
<label for="gender_1">
<input id="gender_1" required="1" name="gender" value="1" aria-required="true" type="radio">
Male
</label>
</div>
<div class="radio">
<label for="gender_2">
<input id="gender_2" required="1" name="gender" value="2" aria-required="true" type="radio">
Female
</label>
</div>
</div>
</div>
我希望能够通过班级&#34; col-md-10&#34;来加入div。
不是它不总是一个div或事件同一个类,这就是为什么我想搜索最接近的元素,不是复选框或无线电类的标签
答案 0 :(得分:2)
在:not(input, label, .checkbox, .radio)
选择器中使用.closest()
。我已添加了input
,因为.closest()
开始检查已使用的元素(input
)。
注意:如果您知道自己正在寻找具有.col-md-10
类的元素,则可以使用.closest('.col-md-10')
。
var result = $('input').closest(':not(input, label, .checkbox, .radio)');
console.log(result[0]);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group has-error">
<label for="gender" class="col-md-2 control-label">Gender</label>
<div class="col-md-10">
<div class="radio">
<label for="gender_">
<input id="gender_" required="1" name="gender" value="" aria-required="true" aria-describedby="gender-error" type="radio">
Please select your gender
</label>
</div>
<div class="radio">
<label for="gender_1">
<input id="gender_1" required="1" name="gender" value="1" aria-required="true" type="radio">
Male
</label>
</div>
<div class="radio">
<label for="gender_2">
<input id="gender_2" required="1" name="gender" value="2" aria-required="true" type="radio">
Female
</label>
</div>
</div>
</div>
&#13;