2013-07-04 42 views
12

我試圖做使一些文字顯示在文本輸入是重點,但最近的();方法似乎沒有工作。jQuery closest();不工作

我已經做了JS Fiddle給你看。

這裏是代碼也。

JS

$(document).ready(function(){ 
    $('.validation-error').hide(); 
    $('.name-input').on("focus", function(){ 
    $(this).closest('.validation-error').show(); 
    }); 
}); 

HTML

<fieldset> 
<legend>User Details</legend> 
    <table> 
    <tr> 
    <td width="200"> 
    <label for="user"><span class="required-fields">*</span> User  Name</label> 
    </td> 
    <td> 
    <input type="text" id="user" class="name-input"> 
    </td> 
    <td> 
    <p class="validation-error">This field cannot be blank or less than 2 characters.</p> 
    </td> 
</tr> 
<tr> 
    <td> 
    <label for="job_title"><span class="required-fields">*</span> Job Title</label></td> 
    <td> 
    <input type="text" id="job_title" class="name-input"> 
    </td> 
    <td> 
    <p class="validation-error">This field cannot be blank or less than 2 characters.</p> 
    </td> 
</tr> 
<tr> 
    <td> 
    <label for="full_name">* Full Name</label> 
    </td> 
    <td> 
    <input type="text" id="full_name" class="name-input"> 
    </td> 
    <td> 
    <p class="validation-error">This field cannot be blank or less than 2 characters.</p> 
    </td> 
</tr> 
</table> 
</fieldset> 

任何幫助,將不勝感激。

+2

'closest'正在經過面值ents –

+0

檢查文檔是怎麼回事? http://api.jquery.com/closest/ –

+0

'最接近()'方法在IE/Edge中不起作用。有關支持的瀏覽器,請參閱http://caniuse.com/#feat=element-closest。 –

回答

48

.closest()找到最近的父元素,.validation-error不是name-input元素的父項。你需要它在相同的tr來作爲輸入要素的.validation-error元素

你需要

$(this).closest('tr').find('.validation-error').show(); 

$(this).closest('td').next().find('.validation-error').show(); 
+0

非常感謝! – Ollie2619

+0

我使用的是firefox v33.0。在這個版本中是否支持最接近的 – Muthu

2

試試我的版本Demo Fiddle雖然阿倫P.佐尼的回答要好得多。 。

$(this).parent().siblings().find('.validation-error').show();