Объединить несколько условных операторов jQuery в один запрос? - PullRequest
4 голосов
/ 29 августа 2011

На своей веб-странице я выводю jQuery для каждой записи, отображаемой на странице, следующим образом:

if ($.trim($('#attachment<%# Eval("Id")%> .content').html()) == '') {
  $('#attachmentClick<%# Eval("Id")%>').hide();
}

Обратите внимание на привязку сервера к идентификатору элемента, чтобы убедиться, что в каждой записи обработан jQuery. Есть ли способ сделать это только один раз на странице, внедрив условный оператор, такой как «для всех $(this.ID + ' .attachmentsClick'), скрывать, только если $('.attachments.content').html() trimmed пуст»?

Ответы [ 2 ]

6 голосов
/ 29 августа 2011

Вы можете использовать функцию фильтра jQuery , чтобы сократить набор потенциальных элементов до элементов с пустым содержимым, а затем скрыть их:

$('.attachmentsClick').filter(function(){
    return $.trim($(this).find('.content').html()) == '';
}).hide();

Это предполагает, что вы предоставляете класс "attachmentsClick" для всех ваших элементов строки. Ему не нужен идентификатор элементов строки. Просто запустите это после того, как ваш контент загрузится, и он скроет все элементы с классом «attachmentsClick», у которых есть дочерний класс с классом «content», который пуст при обрезке.

Ваш HTML может выглядеть примерно так:

<div class="attachmentsClick"><!-- this one will be hidden -->
  <div class="content"></div>
</div>

<div class="attachmentsClick"><!-- this one will be hidden too -->
  <div class="content">     </div>
</div>

<div class="attachmentsClick"><!-- this one will NOT be hidden -->
  <div class="content"><p>some content<p></div>
</div>
1 голос
/ 29 августа 2011

Вы можете использовать .each(). .someCommonClass должно быть на каждом, у которого есть ID.

$('.someCommonClass').each(function(i, e) {
   var $e = $(e);
   if ($.trim($('.content', $e).html()) == '')
       $e.hide();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...