【问题标题】:jQuery closest(); not workingjQuery 最接近();不工作
【发布时间】:2013-07-04 09:41:04
【问题描述】:

我正在尝试在文本输入处于焦点时显示一些文本,但最接近();方法似乎不起作用。

我做了一个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>

任何帮助将不胜感激。

【问题讨论】:

标签: jquery traversal closest


【解决方案1】:

.closest() 查找最近的父元素,.validation-error 不是name-input 元素的父元素。您需要 .validation-error 元素,它与输入元素位于同一 tr

你需要

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

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

【讨论】:

  • 我使用的是 firefox v33.0。此版本是否支持最接近
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2014-05-29
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多