2017-01-07 15 views
0

给出一个元素,我需要找到最接近的元素,它不是label,也不是一个具有类的元素radiocheckbox有没有办法找到最接近的元素,它不是标签,也没有类

这里是我做了什么

$parent = element.closest('div'); 

if($parent.hasClass('checkbox') || $parent.hasClass('radio')) 
{ 
    $parent = $parent.parent(); 
} 

error.appendTo($parent); 

上面的代码工作的大部分,除了它只是寻找一个div没有任何元素。

另外,有没有更简单的方法来写这段代码,我可以避免条件声明?也许,使用find()方法来搜索,但不知道如何使用它。

这里是我试图寻找

<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> 

我希望能够appent与类“COL-MD-10”的DIV的HTML代码。

不是它并不总是一个div或事件的同一类这就是为什么我要搜索未在.closest()选择器标签选框或课堂上使用:not(input, label, .checkbox, .radio)

+1

'element.closest( 'DIV:不(标签,.checkbox,.radio)')' –

+0

现在,你有答案,我想推荐你解释什么试图完成整体,因为这似乎是一个非常有趣的方式来处理元素。如果我们知道整个场景,那么可能有更有效的方法。 – k2snowman69

回答

2

最接近的元素。我添加了input,因为.closest()开始使用已使用的元素(input)进行检查。

注:如果你知道你正在寻找与类的元素,你可以使用.closest('.col-md-10')

var result = $('input').closest(':not(input, label, .checkbox, .radio)'); 
 

 
console.log(result[0]);
<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>

+0

它没有工作。我用html代码更新了我的问题。在我的情况下,元素是输入元素,我需要识别与类“col-md-10” – Jaylen

+0

完美的div!这是我用'$ parent = element.closest(':not(input,label,.checkbox,.radio)'')结束的。 error.appendTo($ parent);'非常感谢你 – Jaylen

相关问题