2013-07-04 16 views
12

テキスト入力がフォーカスされているときにテキストを表示させようとしていますが、closest();メソッドが機能していないようです。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

'closest()'メソッドはIE/Edgeでは動作しません。サポートされているブラウザについてはhttp://caniuse.com/#feat=element-closestをご覧ください。 –

答えて

48

.closest().validation-errorは、name-input要素の親ではありません。あなたはアルンP.ジョニーの答えははるかに良いですが、私のバージョンDemo Fiddleをお試しください

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

または

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

ありがとうございます! – Ollie2619

+0

私はfirefox v33.0を使用しています。このバージョンで最も近いものがサポートされているかどうか – Muthu

2

が必要

入力要素と同じtrの下に来る.validation-error要素を必要としています。

$(this).parent().siblings().find('.validation-error').show(); 
関連する問題