2014-04-23 11 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

你的选择是错误的

$("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

好吧,谢谢 –