将多个jQuery条件语句合并到单个查询中?

时间:2011-08-29 12:54:08

标签: javascript jquery jquery-selectors

在我的网页上,我为页面上呈现的每条记录输出jQuery,如下所示:

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

请注意,元素ID上有服务器绑定,以确保每条记录都处理了jQuery。有没有办法在页面上只通过嵌入条件语句执行一次,例如“for all $(this.ID + ' .attachmentsClick'),仅当$('.attachments.content').html() trimmed为空白时才隐藏”?

2 个答案:

答案 0 :(得分:6)

您可以使用jQuery's filter function将潜在元素集合减少为具有空内容的元素,然后隐藏它们:

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

这假定您将“attachmentsClick”类提供给所有行元素。它不需要行元素的ID。只需在你的内容加载后运行它,它将隐藏所有带有“附件点击”类的元素,这些元素的子类具有“内容”类,在修剪时为空。

您的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 :(得分:1)

您可以使用.each().someCommonClass应该是每个有ID的人。

$('.someCommonClass').each(function(i, e) {
   var $e = $(e);
   if ($.trim($('.content', $e).html()) == '')
       $e.hide();
});