jQuery 最后一个子元素在 IE8 中抛出异常

发布于 2024-12-10 09:24:31 字数 1398 浏览 0 评论 0原文

我有一个包含 3 列的表。第三列仅包含用于对行进行排序的标签。在 $(document).ready 上,我使用 jQuery 隐藏第三列(仅包含标签),并使用

$(document).ready(function() {
$("#songListTable tr td:nth-child(3)").hide().width(0); 
$("#songListTable tr td:nth-child(1)").addClass("songTitle");
$("#songListTable tr td:nth-child(2)").addClass("songPerformer");
});

This Works on all browsers 将样式类添加到其他列。我添加了 .width(0) 以确保隐藏列确实如此不占用布局中的任何空间。

然后,我使用表单选择将值:

<form id="songSortForm" name="songSortForm" method="post" action="">
<select name="songSortSelect" id="songSortSelect" onChange=sortSongs(this.value)>

发送到脚本以循环浏览列中的所有行,检查该行中的第三个 td 是否包含该值,并根据结果显示或隐藏整行。

function sortSongs (tagQuery) {
$("#songListTable tr").each(function() {
    $thisText= $(this).find("td:last-Child").html();
    $(this).show();

    if ($thisText.indexOf(tagQuery)>-1) {
    $(this).show();
    }
else {
    $(this).hide();
    } 
})
};

除了 IE 之外,这在所有浏览器中都可以正常工作。 IE 开发人员工具显示抛出异常,但 jQuery1.6.2 脚本未捕获该异常(第 17 行,字符 12370)。然而,当我单步执行脚本时,每次我在排序脚本中使用“td:last-Child”时,似乎都会抛出错误。脚本中断。 last-Child 在 (document).ready 脚本中没有抛出错误,所以这可能是我自己的代码中的错误,但我已经寻找了 2 天才能在网上找到答案。

表中附加到 anthying 的唯一样式是字体系列、颜色、宽度、边距和文本对齐。

任何帮助将不胜感激!

您可以在以下位置查看测试页面:http://donbryn.ipage.com/media.php (点击“歌曲列表”)。

I have a table with 3 columns. The 3rd column contains only tags with which to sort the rows. On $(document).ready I use jQuery to hide the 3rd column (containing only tags) and add styling classes to the other columns using

$(document).ready(function() {
$("#songListTable tr td:nth-child(3)").hide().width(0); 
$("#songListTable tr td:nth-child(1)").addClass("songTitle");
$("#songListTable tr td:nth-child(2)").addClass("songPerformer");
});

This works on all browsers.I added the .width(0) to make sure the hidden column did not take up any space in the layout.

Then I use a form select to send a value:

<form id="songSortForm" name="songSortForm" method="post" action="">
<select name="songSortSelect" id="songSortSelect" onChange=sortSongs(this.value)>

to a script to cycle through all rows in the column, check to see if the 3rd td in that row contains the value, and show or hide the entire row based on the result.

function sortSongs (tagQuery) {
$("#songListTable tr").each(function() {
    $thisText= $(this).find("td:last-Child").html();
    $(this).show();

    if ($thisText.indexOf(tagQuery)>-1) {
    $(this).show();
    }
else {
    $(this).hide();
    } 
})
};

This works beautifully in all browsers but IE. IE developers tools are showing an exception thrown and not caught in the jQuery1.6.2 script (line 17, character 12370). However as I step through the script the error seems to be thrown every time I use "td:last-Child" in my sorting script. script breaks. last-Child throws no error in the (document).ready script, so it's probably an error in my own code, but I've been looking for 2 days to find an answer online.

The only style attached to anthying in the table is font-family, color, width, margin, and text-align.

ANY help would be GREATLY appreciated!!

You can see the test page at: http://donbryn.ipage.com/media.php
(click on "song List").

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

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

发布评论

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

评论(1

澉约 2024-12-17 09:24:31

我认为这是因为 IE8 不支持 :last-child 选择器,而只支持 :first-child

I think that's because IE8 doesn't support :last-child selector, but just :first-child

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