2013-07-04 45 views
12

Próbuję zrobić, aby pokazać tekst, gdy tekst jest aktywny, ale najbliższy(); metoda wydaje się nie działać.jQuery najbliższe(); nie działa

Zrobiłem JS Fiddle, aby obejrzeć.

i tutaj jest również kod.

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> 

Każda pomoc będzie mile widziane.

+2

'najbliższy' przechodzi przez normę ents –

+0

Co ze sprawdzeniem dokumentu? http://api.jquery.com/closest/ –

+0

Metoda 'closest()' nie działa w IE/Edge. Zobacz http://caniuse.com/#feat=element-closest dla obsługiwanych przeglądarek. –

Odpowiedz

48

.closest() znajduje najbliższy element nadrzędny, .validation-error nie jest elementem nadrzędnym elementu name-input. Trzeba element .validation-error który przychodzi pod tym samym tr jako elementu wejściowego

trzeba

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

lub

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

Dziękuję bardzo !! – Ollie2619

+0

Używam firefox v33.0. Czy najbliższa jest obsługiwana w tej wersji – Muthu

2

Spróbuj moją wersję Demo Fiddle chociaż odpowiedź Arun P. Johny jest znacznie lepiej.

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