IE Friendly Способ в jQuery определить, является ли элемент пустым или содержит только пробелы или другие пустые элементы? - PullRequest
1 голос
/ 30 марта 2012

Я нашел много других тем, похожих на эту, но я все они немного уникальны ... так что здесь:

Я пытаюсь построить оператор IF на основе того, является ли элемент пустым. Однако, поскольку CMS, с которой я работаю, будет по-прежнему выводить пустое пространство, мой оператор IF должен иметь возможность распознавать пустой пробел и пустые дочерние элементы как все еще «пустые» в отношении родительского элемента.

Это код, который у меня есть - и он хорошо работает в современных браузерах, но он не работает IE 7/8 . Я читал, что могут быть проблемы с "отделкой" в IE ?

Есть идеи по альтернативному решению, которое будет работать с IE?

$('.items').each(function() {
    if ($(this).find('.the-element-to-check-for-emptiness').html().trim()) {
        $(this).css('display', 'block');
    }
});

По сути, я скрываю все ".items" по умолчанию, а затем, если их элемент "элемент для проверки на пустоту" имеет какое-либо содержимое, я скрываю элемент.

Любой вклад приветствуется, Спасибо!

UPDATE

После понимания Джеймса я обновил свой код, чтобы изменить вызов на «trim», но теперь оператор IF, по-видимому, всегда принимает значение false, несмотря ни на что. Есть идеи?

$('.items').each(function() {
    if ($(this).find('.the-element-to-check-for-emptiness').html()$.trim()) {
        $(this).css('display', 'block');
    }
});

Ответы [ 2 ]

3 голосов
/ 30 марта 2012

IE не имеет trim, используйте вместо jquery $.trim().

http://api.jquery.com/jQuery.trim/

$.trim($(this).find('.the-element-to-check-for-emptiness').html())
0 голосов
/ 30 марта 2012

Предполагая, что CMS использует неразрывные пробелы, я бы использовал регулярное выражение, чтобы увидеть, если обрезается.Я бы порекомендовал это:

$('.items').each(function() {
   var val = $(this).find('.the-element-to-check-for-emptiness').html();
   var r = new RegExp('^(( )|\\s)*$');
   if (!r.test(val)) {
     $(this).css('display', 'block');
   }
});

Регулярное выражение найдет любой пробел или неразрывный пробел и вернет true.Поэтому мы отрицаем это, чтобы найти, есть ли что-нибудь еще в элементе.

...