为什么这个jquery $(this).is(“:empty”)适用于IE而不适用于Chrome?

时间:2010-11-04 09:34:34

标签: jquery google-chrome

//Add Row with No data recorded message, when the table is empty/////////////////////////////////////////////

    $("tbody").each(function () {
        NoOfColumns = $(this).prev("thead").find("th").length;

        if ($(this).is(":empty")) {
            $(this).append("<tr><td  class='trTopItem' style='border-top:1px solid silver;background-color:#eeeaf3;'  colspan=" + NoOfColumns + ">No Data Recorded</td></tr>");
        }
    });

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:3)

我怀疑它与浏览器认为是空元素有关。如果你看一下我用jsfiddle创建的例子,你会注意到前两个表只是因为其中一个元素有空格而另一个没有空格。

http://jsfiddle.net/qtjdp/1/

在IE上,只在标记中没有空格的文件中,在Firefox和Firefox上都会显示无数据消息。

你会看到我已经添加了一个当前被注释掉的替代if语句。如果你使用它,它适用于firefox(和Psytronic在评论Chrome中告诉我,虽然我没有安装它):

if ($(this).children().length==0)

原因是这是检查子元素(这是你想要的),而不仅仅是任何类型的内容。