有没有办法找到最近没有标签但没有类

时间:2017-01-07 20:31:22

标签: javascript jquery

给予一个元素,我需要找到最近的元素,而不是label并且不是一个具有radiocheckbox <类的元素/ 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或事件同一个类,这就是为什么我想搜索最接近的元素,不是复选框或无线电类的标签

1 个答案:

答案 0 :(得分:2)

:not(input, label, .checkbox, .radio)选择器中使用.closest()。我已添加了input,因为.closest()开始检查已使用的元素(input)。

注意:如果您知道自己正在寻找具有.col-md-10类的元素,则可以使用.closest('.col-md-10')

&#13;
&#13;
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;
&#13;
&#13;