jQuery 使用类查找下一个元素

发布于 2024-10-20 11:11:25 字数 686 浏览 1 评论 0原文

我有一个非常简单的问题,花了我 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") 和很多其他方法,但没有任何帮助。

提前致谢!

I have a quite simple question, that ate me 4 hours and is not yet solved: How to find next span with specific class with jQuery?
I have the following html

<tr>
    <td align="right">Име: </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>

and I validate it with jQuery.
I want if there's an error message, generated with js (just a string), jQuery to find nearest span with class .error and to text() the message in there. I tried with nextAll(), next("span.error") and a lot of other things, but nothing helped me.

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

萧瑟寒风 2024-10-27 11:11:25

我知道这可能不完全是您正在寻找的内容,但如果您已经获得输入,如下所示:

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

那么您可以执行以下操作:

input.parents('tr').eq(0).next().find('.error').text(nameErrEmptyMsg);

I know this may not be exactly what you're looking for, but if you've GOT the input, like this:

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

Then you can just do:

input.parents('tr').eq(0).next().find('.error').text(nameErrEmptyMsg);
悲凉≈ 2024-10-27 11:11:25

问题是 .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/

the problem is that .next() and .nextAll() only search through through the siblings (elements that have the same parent).

From jQuery documentation:

Description: Get all following
siblings of each element in the set of
matched elements, optionally filtered
by a selector.

In your case you have:

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

As i understand your JQuery code is run on the input, right? In this case before calling newxt() or nextAll() you should first go up 2 levels, until the and afterwards select the next because there is the that you want to find, so:

here's a working example to check it:
http://jsfiddle.net/EM5Gw/

半岛未凉 2024-10-27 11:11:25

尝试

  console.log($("td>span").next().find(".error").text())

try

  console.log($("td>span").next().find(".error").text())
水中月 2024-10-27 11:11:25

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

http://jsfiddle.net/ wPZgg/

You can use the next('span.error'):

http://jsfiddle.net/wPZgg/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文