jQuery nearest(); 不工作

Oll*_*619 16 jquery traversal closest

我正在尝试做一些文本显示当文本输入在焦点上,但最近的(); 方法似乎不起作用.

我为你做了一个JS小提琴.

这里也是代码.

JS

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

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>
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

Aru*_*hny 56

.closest()查找最近的父元素,.validation-error不是元素的父name-input元素.您需要与input元素.validation-error相同tr的元素

你需要

$(this).closest('tr').find('.validation-error').show();
Run Code Online (Sandbox Code Playgroud)

要么

$(this).closest('td').next().find('.validation-error').show();
Run Code Online (Sandbox Code Playgroud)


Olr*_*rac 5

试试我的版本Demo Fiddle虽然 Arun P. Johny 的回答要好得多。

$(this).parent().siblings().find('.validation-error').show();
Run Code Online (Sandbox Code Playgroud)