Files
web/07-jQuery/03-jQuery操作DOM.md
qianguyihao 6a105f5c23 add files
2018-02-05 15:28:01 +08:00

7.5 KiB
Raw Blame History

文本主要内容

  • 样式和类操作 
  • jQuery 动画 
  • 节点操作

样式操作和类操作

作用:设置或获取元素的样式属性值。

样式操作

1、设置样式


    //设置单个样式:  css(属性,值);
    $("div").css("background-color","red");

    //设置多个样式:  css(json);
	 $("div").css({"width":100,"height":100,"background-color":"pink"});



2、获取样式

    //获取样式css(属性);
    //获取的时候如果有很多个那么获取jquery对象中的第一个
    alert($("div").css("width"));

举例如下:

20180205_1315.png

类操作className

1、添加类样式

	$(selector).addClass("liItem");  //为指定元素添加类className

注意:此处类名不带点,所有类操作的方法类名都不带点。

2、移除类样式

	$(selector).removeClass("liItem");  //为指定元素移除类 className
	$(selector).removeClass();          //不指定参数,表示移除被选中元素的所有类

3、判断有没有类样式

	$(selector).hasClass("liItem");   //判断指定元素是否包含类 className

此时会返回true或false。jquery对象中只要有一个带有指定类名的就是true所有都不带才是false。

举例:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: pink;
        }

        .current {
            background-color: red;
        }
    </style>
    <script src="jquery-1.11.1.js"></script>
    <script>
        $(function () {
            $("button").eq(0).click(function () {
                //添加类
                $("div").addClass("current");
                //判断类
                alert($("div").hasClass("current"));
            });

            $("button").eq(1).click(function () {
                //删除类
                $("div").removeClass("current");
                //判断类
                alert($("div").hasClass("current"));
            });
            //alert($("div").hasClass("current"));//jquery对象中只要有一个带有类名的就是true所有都不带才是false。
        })
    </script>
</head>
<body>
<button>添加</button>
<button>删除</button>
<div></div>
<div></div>
<div></div>
<div class="current"></div>
</body>
</html>

4、切换类样式

$(selector).toggleClass(liItem);    //为指定元素切换类 className该元素有类则移除没有指定类则添加。

解释:为指定元素切换类 className该元素有类则移除没有指定类则添加。

如果采用采用正常的思路实现上面这句话,代码是:

   if($("div").hasClass("current")){
       //如果有类名,那么删除
       $("div").removeClass("current")
   }else{
       //如果没有类名,那么添加
       $("div").addClass("current")
   }

现在有了toggleClass()方法,一行代码即可实现。

举例:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: green;
        }
        .current {
            background-color: red;
        }
    </style>
    <script src="jquery-1.11.1.js"></script>
    <script>
        $(function () {
            $("button").click(function () {
                //需求:点击按钮 ,切换背景
                //切换类toggleCLass
                $("div").toggleClass("current");
            });
        })
    </script>
</head>
<body>
<button>切换背景</button>
<div></div>
</body>
</html>

实现的效果:

20180205_1330.gif

样式操作和类操作的比较

  • 操作的样式非常少,那么可以通过.css()实现。

  • 操作的样式很多,建议通过使用类 class 的方式来操作。

  • 如果考虑以后维护方便把CSS从js中分离出来的话推荐使用类的方式来操作。

举例addClass+removeClass

代码实现:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            list-style: none;
        }

        .wrapper {
            width: 1000px;
            height: 475px;
            margin: 0 auto;
            margin-top: 100px;
        }

        .tab {
            border: 1px solid #ddd;
            border-bottom: 0;
            height: 36px;
            width: 320px;
        }

        .tab li {
            position: relative;
            float: left;
            width: 80px;
            height: 34px;
            line-height: 34px;
            text-align: center;
            cursor: pointer;
            border-top: 4px solid #fff;
        }

        .tab span {
            position: absolute;
            right: 0;
            top: 10px;
            background: #ddd;
            width: 1px;
            height: 14px;
            overflow: hidden;
        }

        .products {
            width: 1002px;
            border: 1px solid #ddd;
            height: 476px;
        }

        .products .main {
            float: left;
            display: none;
        }

        .products .main.selected {
            display: block;
        }

        .tab li.active {
            border-color: red;
            border-bottom: 0;
        }

    </style>
    <script src="jquery-1.11.1.js"></script>
    <script>
        jQuery(window).ready(function () {
            //需求:鼠标放到那个li上让该li添加active类下面的对应的.main的div添加selected
            $(".tab>li").mouseenter(function () {
                //不用判断当前的li添加active类其他的删除active类
                $(this).addClass("active").siblings("li").removeClass("active");
                //对应索引值的div添加selected类其他的删除selected类
                //【重要】根据tab的索引值获取下方图片div的索引值
                $(".products>div").eq($(this).index()).addClass("selected").siblings("div").removeClass("selected");
            });
        });
    </script>
</head>
<body>
<div class="wrapper">
    <ul class="tab">
        <li class="tab-item active">国际大牌<span></span></li>
        <li class="tab-item">国妆名牌<span></span></li>
        <li class="tab-item">清洁用品<span></span></li>
        <li class="tab-item">男士精品</li>
    </ul>
    <div class="products">
        <div class="main selected">
            <a href="###"><img src="images/guojidapai.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="images/guozhuangmingpin.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="images/qingjieyongpin.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="images/nanshijingpin.jpg" alt=""/></a>
        </div>
    </div>
</div>

</body>
</html>

上方代码中我们注意tab栏和下方图片栏的index值一一对应这里用得很巧妙。

效果:

20180205_1345.gif