嗨,希望有人能帮上忙:
我基本上想要的是,当div自带文本为空时,它必须隐藏div并将父div (grid-6)更改为class=grid-12。我似乎不能完成这项工作!下面是我拥有的(samplecode):
<div class=header>
<img src="[[DTIMAGE]]" alt="inuit.css logo">
</div>
<h1 style="font-size:10px;">[[TITLE]]</h1>
<div class=grids>
<div class=grid-12>
[[FULLTEXT]]
</div><!-- /grid-6 -->
</div><!-- /grids -->
<hr>
<div class=grids>
<div class=grid-6>
[[FULLTEXT]]
</div><!-- /grid-6 -->
<div class=grid-6>
<div class="introtext"></div>
</div><!-- /grid-6 -->
</div><!-- /grids -->
<hr>
<div class=footer>
[[FOOTER]]
</div>使用 1.7.2的脚本
$(document).ready(function(){
if ($(".introtext").text() === ""){
$(".introtext").hide();
}
});提前感谢
发布于 2012-08-06 21:24:47
如果我理解正确,那么我建议:
$('.introtext').each(
function() {
if (!$(this).text()) {
$(this).hide().parent().toggleClass('grid-6 grid-12');
}
});JS Fiddle演示。
如OP的评论中所指出的,上述代码重新编写以说明对需求的更改:
我大错特错了(要让这件事奏效),事实是如果div内嵌文本是空的,div网格-6(其中有[全文])应该改为div=格列格-12。
$('.introtext').each(
function() {
if (!$(this).text()) {
$(this).hide().parent().prev().toggleClass('grid-6 grid-12');
}
});JS Fiddle演示。
重申了上述内容:
$('.grid-6').filter(
function(){
var introtextEl = $(this).next('.grid-6').find('.introtext');
return introtextEl.length && !introtextEl.text()
}).toggleClass('grid-6 grid-12');JS Fiddle演示。
上面的代码(最新的代码块)有效地查看选择器返回的所有元素,并根据两个条件对它们进行筛选,第一,如果类grid-6中有以下元素和类introtext的子元素(jQuery选择器总是返回数组,因此进行.length检查),那么第二:如果找到的.introtext元素没有文本内容。
如果这些条件都为真,则返回当前评估的元素(以及所有条件为真的元素),由toggleClass()方法对其进行操作。
参考文献:
each()。filter()。find()。hide()。next()。parent()。prev()。text()。toggleClass()。发布于 2012-08-06 21:24:52
您可以使用*空选择器:
if ( $(".introtext").is(':empty') ){
$(".introtext").hide().parent().attr('class', 'grid-12')
}如果introtext类有多个元素,则可以使用each方法:
$('.introtext').each(function(){
if ( $(this).is(':empty') ){
$(this).hide().parent().attr('class', 'grid-12')
}
})$('.girds div').each(function(){
if ( $(this).text() == '[[FULLTEXT]]'){
$(this).attr('class', 'grid-12')
}
})https://stackoverflow.com/questions/11836101
复制相似问题