首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果其他div为空,则更改div类名。

如果其他div为空,则更改div类名。
EN

Stack Overflow用户
提问于 2012-08-06 21:20:32
回答 2查看 766关注 0票数 1

嗨,希望有人能帮上忙:

我基本上想要的是,当div自带文本为空时,它必须隐藏div并将父div (grid-6)更改为class=grid-12。我似乎不能完成这项工作!下面是我拥有的(samplecode):

代码语言:javascript
复制
<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的脚本

代码语言:javascript
复制
$(document).ready(function(){
    if ($(".introtext").text() === ""){
        $(".introtext").hide();
    }
});

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-06 21:24:47

如果我理解正确,那么我建议:

代码语言:javascript
复制
$('.introtext').each(
    function() {
        if (!$(this).text()) {
            $(this).hide().parent().toggleClass('grid-6 grid-12');
        }
    });​

JS Fiddle演示

如OP的评论中所指出的,上述代码重新编写以说明对需求的更改:

我大错特错了(要让这件事奏效),事实是如果div内嵌文本是空的,div网格-6(其中有[全文])应该改为div=格列格-12。

代码语言:javascript
复制
$('.introtext').each(
    function() {
        if (!$(this).text()) {
            $(this).hide().parent().prev().toggleClass('grid-6 grid-12');
        }
    });​

JS Fiddle演示

重申了上述内容:

代码语言:javascript
复制
$('.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()
票数 0
EN

Stack Overflow用户

发布于 2012-08-06 21:24:52

您可以使用*空选择器:

代码语言:javascript
复制
if ( $(".introtext").is(':empty') ){
      $(".introtext").hide().parent().attr('class', 'grid-12')
}

如果introtext类有多个元素,则可以使用each方法:

代码语言:javascript
复制
$('.introtext').each(function(){
    if ( $(this).is(':empty') ){
          $(this).hide().parent().attr('class', 'grid-12')
    }
})
代码语言:javascript
复制
$('.girds div').each(function(){
    if ( $(this).text() == '[[FULLTEXT]]'){
          $(this).attr('class', 'grid-12')
    }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11836101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档