JQuery next().attr() 不工作
Posted
技术标签:
【中文标题】JQuery next().attr() 不工作【英文标题】:JQuery next().attr() not working 【发布时间】:2013-03-29 13:42:04 【问题描述】:这是我的 JS 代码
var inputid = $("#"+parentId).next().attr('id');
var tdid = $("#"+inputid).next().attr('id');
这里的“parentId”是我函数中的一个参数。基本上 parentId 是 td 的 id,在 td 之后我有一个隐藏的文本字段,然后是另一个 td。
td->hiddenfiled->td
首先获取第一个 td 的 id,使用该 id 获取隐藏字段的 id,然后使用隐藏字段的 id 获取下一个 td 的 id。
这在除 IE 之外的所有浏览器中都可以正常工作。当我提醒它时,它给出了“未定义”。
这是我的html
<td id="tone_one" class="ttd_class class_tone" style="border-left: 3px solid #000000; border-right: 3px solid #000000;" align=center valign=bottom bgcolor="#ffffff" > </td><input type="hidden" id="tone_one_txt" name="tone_one_txt">
<td id="tone_two" class="ttd_class class_ttwo" style="border-left: 3px solid #000000; border-right: 3px solid #000000;" align=center valign=bottom bgcolor="#ffffff" > </td><input type="hidden" id="tone_two_txt" name="tone_two_txt">
我是 JQuery 的新手。请帮忙。
谢谢
【问题讨论】:
请包含您的 html。作为td
同级的隐藏文本字段无效。
您可以将选择器传递给next()
以跳过隐藏字段:$("#"+parentId).next('td').attr('id');
@jbabey:.next
不是这样工作的。如果你传递一个选择器,它会选择下一个兄弟只有当它匹配选择器。它不会选择与选择器匹配的下一个兄弟。
那是无效的标记。你不应该有<td></td><input /><td></td>
。你能把隐藏的输入放在<td>
元素中吗?
IE 正在正确修复 html,导致隐藏的输入被移到其他地方,因为它在那里无效。
【参考方案1】:
问题是您的 HTML 没有被 IE 正确解释。只需将隐藏的输入字段放在相同的td
中,然后尝试下面的代码。它适用于所有浏览器:
HTML
<table>
<tr>
<td id="tone_one" class="ttd_class class_tone" style="border-left: 3px solid #000000; border-right: 3px solid #000000;" align=center valign=bottom bgcolor="#ffffff">
<input type="hidden" id="tone_one_txt" name="tone_one_txt">
</td>
<td id="tone_two" class="ttd_class class_ttwo" style="border-left: 3px solid #000000; border-right: 3px solid #000000;" align=center valign=bottom bgcolor="#ffffff">
<input type="hidden" id="tone_two_txt" name="tone_two_txt">
</td>
</tr>
</table>
JS
var inputid = $("#"+parentId).children().attr('id');
var tdid = $("#"+inputid).closest('td').next().attr('id');
【讨论】:
【参考方案2】:这样使用。
var inputid = $("#parentId").next().attr('id');
【讨论】:
为什么.next
函数会有一个属性attr
?这是完全错误的。
$("#parentId").next.attr
不存在! .next
是一个函数:api.jquery.com/next
阅读如何使用.next()
方法(注意括号)api.jquery.com/next
现在您已将其更改为函数调用,您发布了 OP 已经使用的内容,但对他不起作用。 “我们不能这样使用吗?” 嗯,你最初不是这样发布的。你错过了()
。
但是为什么呢?也许变量 parentId
包含实际 ID。你在这里只是做假设。正如您在 OP 发布的 HTML 中看到的那样,表格单元格的 ID 是 tone_on
和 tone_two
,而不是 parentId
。以上是关于JQuery next().attr() 不工作的主要内容,如果未能解决你的问题,请参考以下文章