我正试图让一个div显示另一个是否为空。这需要在整个页面中多次发生。该脚本无法在当前状态下工作。
脚本:
$('.standard_page_list_result').each(function(){
if ($('.children p').length == 0)
$('.summary').css("display", "block");
});
HTML:
<div class="standard_page_list_result"><div class="children"><p>Hello</p></div>
<div class="summary"><p>Goodbye</p></div></div>
<div class="standard_page_list_result"><div class="children"><p>Hello</p></div>
<div class="summary"><p>Goodbye</p></div></div>
<div class="standard_page_list_result"><div class="children"><p>Hello</p></div>
<div class="summary"><p>Goodbye</p></div></div>
<div class="standard_page_list_result"><div class="children"><p></p></div>
<div class="summary"><p>Hello!</p></div></div>
CSS:
.summary { display: none; }
答案 0 :(得分:3)
在一行中:
$('.standard_page_list_result .children p:empty').parent().next('.summary').css('display','block');
答案 1 :(得分:2)
使用相同的概念,您需要使用this
识别您的概念,然后执行查找选择器以使其正常工作。你正在做的是获得所有的长度。
$('.standard_page_list_result').each(function(){
if ($(this).find('.children p').text().length == 0)
$(this).find('.summary').css("display", "block");
});
这是适合你的jsFiddle
答案 2 :(得分:1)
而不是使用is()函数检查<div>
尝试的长度。
$('.standard_page_list_result').each(function(){
if($(this).find('.children p').is(':empty')) {
$(this).find('.summary').css("display", "block");
}
});
修改强>
修正了上面的代码,选择每个元素而不是影响所有元素,如果只有1是空的。已经选择了其他答案,但对于未来的观众来说,这是使用is()函数的替代方案。这是一个fiddle。
注意:空检查也没有空格。如果只有一个空格,那么它就不是空的
答案 3 :(得分:1)
根据元素的空虚来切换摘要:
$('.standard_page_list_result').each(function(){
$('.summary', this).toggle( $('.children p', this).is(":empty") );
});
答案 4 :(得分:0)
$('...').length
将告诉您与您的选择器匹配的元素数量,而不是这些元素是否为空。
要检查元素是否为空,我可能会这样做:
if($.trim($(...).text()).length == 0)
最后,您需要在每个内部使用this
来定位相应的元素。像这样:
$('.standard_page_list_result').each(function(){
var $this = $(this);
if ($.trim($this.find('.children p').text()).length == 0){
$this.find('.summary').css("display", "block");
}
});