jQuery中如何使用CSS选择符



jQuery中如何使用CSS选择符?

       现在有一个嵌套的无序列表,该无序列表用于导航,如下代码:

       <ul id=”selected-plays”>

           <li>喜剧

               <ul>

                   <li><a href=”#”>喜剧之王</a></li>

                <li><a href=”#”>仲夏夜之梦</a></li>

                <li><a href=”#”>威尼斯商人</a></li>

            </ul>

        </li>

        <li>悲剧

               <ul>

                   <li><a href=”#”>梁山伯与祝英台</a></li>

                <li><a href=”#”>罗密欧与朱丽叶</a></li>

                <li><a href=”#”>雷雨</a></li>

            </ul>

        </li>

        <li>历史

               <ul>

                   <li><a href=”#”>屈原</a></li>

                <li>亨利四世

                       <ul>

                           <li>第一部分</li>

                        <li>第二部分</li>

                    </ul>

                </li>

                <li><a href=”#”>安史之乱</a></li>

            </ul>

        </li>

</ul>

其显示效果如下图:


 

在jQuery中如何使用CSS选择符 - CH -

现在想使用jQuery为该无序列表添加CSS样式,使其横向显示,怎么办呢?

首先,我们创建一个CSS样式,代码如下:

.horizontal {

              float:left;

              list-style:none;

              margin:10px;

}

定义好了CSS样式之后,接下来就是利用jQueyr为无序列表添加样式,现在就用到了jQuery$()函数,代码如下:

$(document).ready(function() {

              $(‘#selected-plays > li’).addClass(‘horizontal’);

})

当在jQuery代码中使用$(document).ready()结构时,位于其中的所有代码都会在DOM加载完成之后立即执行。

       jQuery中的” 大于号” (也叫做子元素组合符)的作用与CSS样式中的” 大于号相同:就是在嵌套标签中,将当前的样式只作用于父元素的儿子辈的元素之上,而不作用于孙子辈的元素之上。也就是说:将当前样式只作用于父元素的子元素的顶级元素之上。在该代码中就是包含:喜剧 悲剧 历史的<li>标签。添加好样式之后的显示效果如下:

       在jQuery中如何使用CSS选择符 - CH -

       那怎样将当前样式作用于非顶级的子元素之上?当然方法很多,但是在jQuery中如果应用了子元素组合符,那么最好的方式是使用否定伪类选择符,

语法:not(样式)

与上面相同,首先创建一个CSS样式,将其背景设为浅黄色。如下:

.sub_level {

       background-color:#FFFF99;

}

然后使用jQuery添加CSS样式,代码如下:

$(document).ready(function() {

              $(‘#selected-plays > li’).addClass(‘horizontal’);

              $(‘#selected-plays li:not(.horizontal)’).addClass(‘sub_level’);

})

添加完成之后,显示效果如下:

在jQuery中如何使用CSS选择符 - CH -

 

       从本例中可以知道,jQuery可以实现添加CSS样式的功能,所用到的jQuery函数是$(‘元素对象’).addClass(‘样式名’)