5

我有一个非常简单的问题,吃了我 4 个小时,但还没有解决:如何使用 jQuery 找到具有特定类的下一个跨度?我有以下html

<tr>
    <td align="right">Име:&nbsp;</td>
    <td align="left">
         <input type="text" value="<?=$profileSQL['user_name']; ?>" name="user_name" class="input required" />
    </td>
</tr>
<tr>
    <td align="right" colspan="2">
         <span class="error"></span>
    </td>
</tr>

我用 jQuery 验证它。我想如果有错误消息,用 js(只是一个字符串)生成,jQuery 来找到与类最近的跨度.error和那里text()的消息。我尝试了nextAll()next("span.error")还有很多其他的东西,但没有任何帮助。

提前致谢!

4

4 回答 4

2

我知道这可能不是您正在寻找的,但如果您有输入,如下所示:

var input = $('input[name="user_name"]');

然后你可以这样做:

input.parents('tr').eq(0).next().find('.error').text(nameErrEmptyMsg);
于 2011-03-05T14:20:20.167 回答
2

问题是 .next() 和 .nextAll() 仅搜索兄弟姐妹(具有相同父级的元素)。

来自 jQuery 文档:

描述:获取匹配元素集中每个元素的所有后续兄弟,可选地由选择器过滤。

在您的情况下,您有:

  <tr> 
     <td> title here</td> 
     <td><input name="user_name"/> </td>
   </tr>
   <tr>
     <td colspan="2">
       <span class="error"></span>
     </td> 
   </tr>

据我了解,您的 JQuery 代码是在输入上运行的,对吗?在这种情况下,在调用 newxt() 或 nextAll() 之前,您应该首先上升 2 个级别,直到然后选择下一个,因为有您想要找到的,所以:

这是一个检查它的工作示例:http: //jsfiddle.net/EM5Gw/

于 2011-03-05T14:25:13.497 回答
0

尝试

  console.log($("td>span").next().find(".error").text())
于 2011-03-05T14:00:25.507 回答
0

您可以使用next('span.error')

http://jsfiddle.net/wPZgg/

于 2011-03-05T14:01:11.160 回答