Почему этот jquery $ (this) .is (": empty") работает в IE, а в Chrome - нет? - PullRequest
2 голосов
/ 04 ноября 2010
//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 Ответ

3 голосов
/ 04 ноября 2010

Я подозреваю, что это связано с тем, что браузеры считают пустыми элементами.Если вы посмотрите на пример, который я создал с помощью jsfiddle, вы заметите, что первые две таблицы отличаются только тем, что один из элементов body имеет пробел, а другой - нет.

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

В IE это выводит сообщение об отсутствии данных в обоих и в Firefox только в одно без пробелов в теге.

Вы увидите, что я вставил альтернативный оператор if, которыйв настоящее время закомментировано.Если вы используете это, он работает на Firefox (и Psytronic также сообщает мне в комментариях Chrome, хотя у меня его не установлено):

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

Причина в том, что это проверка на дочерние элементы (вот чтоВы хотите здесь), а не просто какой-либо контент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...