【发布时间】:2011-04-24 12:29:11
【问题描述】:
我有一个小的 JavaScript 函数(除其他外)检索具有特定类名的最后一个元素的 ID。
var lastRowID = $(".sectionRow:last").attr('id');
它应该在类似于以下的表格中找到元素:
<table>
<tr id="courseSection[0]" class="sectionRow"><td>stuff</td></tr>
<tr id="courseSection[1]" class="sectionRow"><td>more stuff</td><td><a href="javascript:removeSectionRow(1)">(remove)</a></td><td><a href="javascript:addSectionRow()">(add additional row)</a></td></tr>
</table>
如果我快速输入alert(lastRowID),我会在 Chrome、Firefox 和 IE8 中获得“courseSection[1]”。但是,IE7 讨厌我并说“未定义”。
注意:我也试过$(".sectionRow").last().attr('id'),但没有成功。
对可能发生的事情有什么想法吗?谢谢!
编辑:此表是在单击按钮时使用 javascript 添加的(按钮显示/添加表单的下一部分)。因此,页面加载时 DOM 中的不是静态 html。
当点击删除链接时调用 removeSectionRow(n) 函数。它删除指定的行,然后搜索类名称为“sectionRow”的最后一行,以便为该行提供“添加附加行”链接。这个想法是用户可以随意添加和删除行。这是完成结果的屏幕截图,以说明我可能难以解释的内容:http://imgur.com/uXYHj.png
【问题讨论】:
-
点击某个链接时,代码正在运行。编辑问题以(希望)更好地解释。表本身是在 javascript 页面加载后创建和插入的。这导致了一个有趣的 IE7 错误,除非我使用“tbody”标签,否则表格不会/render/(来源:linkyy.com/1dE)。
-
我会在表格中添加一个
<tbody>,因为浏览器可能会插入一个。然后你就会有一致性。真的不应该有任何问题。有什么理由不让 jQuery 管理用于创建/删除行的处理程序?无论如何,我猜其中一个函数存在一些问题。
标签: javascript jquery internet-explorer jquery-selectors