2014-04-23 4 views
0

HTML кодкласс не получает удалены в центре внимания - JQuery

<div class="mainWrapper"> 
    <div class="FirstLayer removeClass"> 
     <input class="foo" value="fooX" /> 
    </div> 
    <div class="SecondLayer"> 
     <div class="thirdLayer"> 
      <input class="fee" /> 
     </div> 
    </div> 
</div> 

JQuery

$("input.fee").focus(function(){ 
    $(this).closest("div.FirstLayer").removeClass("removeClass"); 
}); 

CSS

.removeClass { 
    background-color: red; 
} 

Ниже скрипку http://jsfiddle.net/YZ6vg/3/

Почему мой класс не удаляется в фокусе ?.

ответ

4

Ваш Selector неправильно

$("input.fee").focus(function(){ 
    $(this).closest("div.mainWrapper").find("div.FirstLayer").removeClass("removeClass"); 
}); 

Working Demo


.closest(selector)

Описание: Для каждого элемента в наборе, получить первый элемент, соответствующий селектор путем тестирования сам элемент и пройдя через его ancestors в дереве DOM.


Проблема

$("input.fee") не предки элемент в div.FirstLayer видите на изображении ниже.

enter image description here

Решение

$("input.fee").closest("div.mainWrapper") Получить предкам элемент div.mainWrapper и чем найти элемент div.FirstLayer

+0

почему OP код не работает, мы не можем сделать это так ?? –

+1

@EhsanSajjad: bacause input.fee не имеет 'div.FirstLayer' как любого родителя. –

+0

okay получил это спасибо –

 Смежные вопросы

  • Нет связанных вопросов^_^