2009-11-17 199 views
1

如果长度LI大于3,我想改变div的类别,如果小于3,那么类别名称应该是默认的,如“content”,如果超过3,那么类别名称应该是“滚动内容如何根据内容更改div类?

<div class="classname"> 

<ul> 
<li>Content</li> 
    <li>Content</li> 
    <li>Content</li> 
    <li>Content</li> 
</ul> 
    </div> 

我更喜欢使用jQuery为此,

回答

3

尝试:

$("ul").each(function() { 
    $(this).parents("div.classname:first") 
    .addClass($(this).children().length > 3 ? "scroll-content" : "content"); 
}); 

或也许是这样的:

$("div.classname").each(function() { 
    $(this).addClass($(this).find("ul").children().length > 3 ? "scroll-content" : "content"); 
}); 
+0

第二种解决方案很好 – 2009-11-17 06:08:04

0
$(function() { 
    if ($("div.classname > ul li").length > 3) 
    { 
     $("div.classname").removeClass().addClass('anotherclass'); 
    } 
    else if (...) 
    { 
     // add another class 
    } 
}); 
0

它可以用一个电话,没有条件语句

$('ul li:nth-child(4)') 
    .closest('div') 
    .removeClass('content') 
    .addClass('scroll-content'); 

这里假设你的默认类是“内容”如你所说来完成。

此调用查找至少有4个子元素(即多于3个)的任何ul,然后找到最接近的父元素,并删除默认类并添加滚动内容类。