1. 程式人生 > >jQuery學習記錄二

jQuery學習記錄二

索引選擇器

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <script src="jquery-1.12.1.js"></script>
  <script>
    //頁面載入
    $(function () {
      $("#btn").click(function () {
        //所有的li中索引為2的li
        $("ul>li:eq(2)").css("backgroundColor","green");
        //所有的li中索引小於5的li
        $("ul>li:lt(5)").css("backgroundColor","deeppink");
        //所有的li中索引大於5的li
        $("ul>li:gt(5)").css("backgroundColor","hotpink");
        //所有li中大於三小於五,也就是四
         $("ul>li:lt(5):gt(3)").css("backgroundColor","blue");
      });
    });
  </script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>
<ul>
  <li>任賢齊</li>
  <li>張震嶽</li>
  <li>羅大佑</li>
  <li>劉德華</li>
  <li>郭富城</li>
  <li>張學友</li>
  <li>黎明</li>
  <li>周星馳</li>
  <li>吳孟達</li>
  <li>周潤發</li>
</ul>
</body>
</html>

案例:好友面板切換

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title</title>
    <style>
        #ul li{
            margin-bottom: 10px;
            background-color: orange;
            font-size: 20px;
            font-weight: bolder;
            cursor: pointer;
        }
        #ul li ul{
            list-style: none;
            margin: 0;
            padding: 0;
        }
        #ul li ul li{
            background-color: pink;
        }
    </style>
    <script src="jquery-1.12.1.js"></script>
    <script>
        $(function () {
            $('#ul>li>ul').hide();
            $('#ul>li').mouseenter(function () {
                $(this).children('ul').show(500);
                /*找到兄弟節點中為 li 的節點的,將其他 ul 隱藏*/
                $(this).siblings('li').find('ul').hide(500);
            });
        });
    </script>
</head>
<body>
<div style="width: 200px;height: 500px;border: 1px solid red;">
    <ul id="ul" style="list-style: none;margin: 0;padding: 0;text-align: center">
        <li>
            幼兒園同學
            <ul>
                <li>tom</li>
                <li>rose</li>
                <li>jack</li>
            </ul>
        </li>
        <li>
            小學同學
            <ul>
                <li>tomm</li>
                <li>rosee</li>
                <li>jackk</li>
            </ul>
        </li>
        <li>
            中學同學
            <ul>
                <li>tommm</li>
                <li>roseee</li>
                <li>jackkk</li>
            </ul>
        </li>
    </ul>
</div>

</body>
</html>

元素樣式設定的三種方式

        *第一種寫法:
//        $("#dv").css("width","300px");
//        $("#dv").css("height","200px");

        *第二種寫法:鏈式程式設計
        //$("#dv").css("width","300px").css("height","200px")

        *第三種寫法:鍵值對的寫法
        var json={"width":"200px","height":"100px","backgroundColor":"pink","border":"2px solid green"};
        $("#dv").css(json);

鏈式程式設計:物件不停的呼叫方法. ↑ 第二種寫法就是鏈式程式設計的案例。

    *呼叫方式:物件.方法().方法.方法().方法();

      //物件呼叫方法,如果返回值還是當前這個物件,那麼就可以繼續的呼叫方法
      //經驗:在jQuery中,一般情況,物件呼叫的方法,這個方法的意思是設定的意思,那麼返回來的幾乎都是當前的物件,就可以繼續的鏈式程式設計了

元素樣式的設定

    *總結:設定元素的樣式可以使用css()方法,也可以使用addClass()或者是removeClass()方法

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    .cls{
      width: 200px;
      height: 100px;
      background-color: crimson;
    }
    .cls2{
      border: 2px solid green;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>
    $(function () {
      $("#btn").click(function () {
        //為div設定類樣式,同時應用多個類樣式
        //$("#dv").addClass("cls");
        //$("#dv").addClass("cls").addClass("cls2");
        //$("#dv").addClass("cls cls2");
        //console.log($("#dv").addClass("cls"));
        //addClass()方法,括號裡什麼也沒有,返回來的仍然是這個物件,即使在括號中設定了內容,返回來的還是這個物件

        //removeClass()方法,同上
        //移除類樣式
        //$("#dv").removeClass("cls");
        //$("#dv").removeClass("cls").removeClass("cls2");
        //$("#dv").removeClass("cls cls2");
        //console.log($("#dv").removeClass("cls"));

        //css方法是不能新增或者移除類樣式的
        //$("#dv").css("class","cls");

      });
    });
  </script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>
<div id="dv"></div>

</body>
</html>

案例:突出顯示,透明度的用法

    *注:遇到了一個問題,圖片衝突了,資料夾裡只有這個,確顯示了一張已經刪除的,用的google,ctrl+shift+del清一下快取就ok了。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            padding:0;
            margin:0;
        }
        body{
            background-color: #000;
        }
        ul{
            list-style: none;
        }
        .wrap{
            margin:100px auto 0;
            width:630px;
            height:394px;
            padding:10px 0 0 10px;
            background-color: #000;
            overflow: hidden;
            border:1px solid #fff;
        }
        .wrap li{
            float: left;
            margin:0 10px 10px 0;
        }
        .wrap img{
            display: block;
            border:0;
        }
    </style>
    <script src="jquery-1.12.2.js"></script>
    <script>
        $(function () {
            $(".wrap>ul>li").mouseenter(function () {
                $(this).css('opacity',1).siblings('li').css('opacity',0.5);
            });
            /*離開那個大框子,才會恢復樣式*/
            $('.wrap').mouseleave(function () {
                $(this).find('li').css('opacity',1);
            });
        });
    </script>
</head>
<body>
<div class="wrap">
    <ul>
        <li>
            <a href="#"><img src="images/01.jpg"></a>
        </li>
        <li>
            <a href="#"><img src="images/02.jpg"></a>
        </li>
        <li>
            <a href="#"><img src="images/03.jpg"></a>
        </li>
        <li>
            <a href="#"><img src="images/04.jpg"></a>
        </li>
        <li>
            <a href="#"><img src="images/05.jpg"></a>
        </li>
        <li>
            <a href="#"><img src="images/06.jpg"></a>
        </li>

    </ul>
</div>
</body>
</html>

案例:手風琴

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            padding:0;
            margin:0;
        }
        ul{
            list-style:none;
        }
        .box{
            width:1200px;
            height:400px;
            margin:50px auto;
            border:1px solid red;
            overflow: hidden;
        }
        .box li{
            width:240px;
            height:400px;
            float: left;
        }
    </style>
    <script src="jquery-1.12.2.js"></script>
    <script>
        $(function () {
            $('.box>ul>li').mouseenter(function () {
                $(this).css('width','800px').siblings('li').css('width','100px');
            });
        });
    </script>
</head>
<body>
<div class="box">
    <ul>
        <li><img src="images/1.jpg"></li>
        <li><img src="images/2.jpg"></li>
        <li><img src="images/3.jpg"></li>
        <li><img src="images/4.jpg"></li>
        <li><img src="images/5.jpg"></li>
    </ul>
</div>
</body>
</html>

案例:開關燈實現,類樣式的切換方法

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    .cls{
      background-color: black;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>
//    $(function () {
//      $("#btn").click(function () {
//        //判斷body是否應用了cls類樣式,如果應用了就移除,否則就新增
//        if($("body").hasClass("cls")){
//          $("body").removeClass("cls");
//        }else{
//          $("body").addClass("cls");
//        }
//      });
//    });

    //第二種方式
    $(function () {
      $("#btn").click(function () {
        //切換---類樣式
        $("body").toggleClass("cls");
      });
    });
  </script>
</head>
<body>
<input type="button" value="開/關" id="btn"/>


</body>
</html>

獲取兄弟元素的幾種方法

        //獲取某個li的下一個兄弟元素
        //$(this).next("li").css("backgroundColor","yellowgreen");
        //獲取某個li的前一個兄弟元素
        //$(this).prev("li").css("backgroundColor","greenyellow");
        //獲取某個li的後面的所有的兄弟元素
        //$(this).nextAll("li").css("backgroundColor","red");
        //獲取某個li的前面的所有的兄弟元素
        //$(this).prevAll("li").css("backgroundColor","red");
        //獲取當前的li的所有的兄弟元素
        //$(this).siblings("li").css("backgroundColor","gray");

 

斷鏈:物件呼叫方法之後,返回的已經不是當前的這個物件了,此時再呼叫方法,就出現了斷鏈
.end()方法是修復斷鏈,恢復斷鏈之前的狀態
        //不推薦使用鏈式程式設計

案例:想實現的效果是,當前前邊一個色,後邊一個色,由於鏈式程式設計,返回出錯了,所以通過end()方法可以實現分層的效果。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    ul {
      list-style-type: none;
      width: 200px;
      position: absolute;
      left: 500px;
    }

    ul li {
      margin-top: 10px;
      cursor: pointer;
      text-align: center;
      font-size: 20px;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>
    $(function () {
      $("ul>li").mouseenter(function () {//滑鼠進入事件
        $(this).css("backgroundColor", "red").siblings("li").css("backgroundColor", "");
      }).mouseleave(function () {//滑鼠離開事件
        $(this).parent().find("li").css("backgroundColor", "");
      }).click(function () {//點選事件
        $(this).prevAll("li").css("backgroundColor", "yellow").end().nextAll("li").css("backgroundColor", "blue");
      });
    });
  </script>
</head>
<body>
<ul>
  <li>青島啤酒(TsingTao)</li>
  <li>瓦倫丁(Wurenbacher)</li>
</ul>
</body>
</html>

案例:jQuery中顯示和隱藏的動畫

    * show和hide方法有引數
    * 引數1:時間----1000毫秒---1秒
    * 引數2:回撥函式---動畫執行完畢後才執行

其他方法:

    * 引數和上面的是一樣
    * slideDown()滑出
    * slideUp()滑入

    * slideToggle()切換滑入和滑出           ----------->切換的意思是顯示和隱藏的切換。

    * fadeIn()淡入
    * fadeOut()淡出
    * fadeToggle()切換淡入和淡出

    * fadeTo(時間,透明值結束);      -------------->時間可以是具體的值,也可以是下邊的選項,最後以這個透明度作為結束
    * slow 比較慢的
    * fast 比較快的
    * normal

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    div {
      width: 300px;
      height: 200px;
      background-color: mediumvioletred;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>
    $(function () {
      //點選第一個按鈕顯示div
      $("#btn1").click(function () {
        $("#dv").show(5000,function () {
          alert("完了");
        });
      });
      //點選第二個按鈕隱藏div
      $("#btn2").click(function () {
        $("#dv").hide(5000,function () {
          alert("好了");
        });
      });
    });
  </script>
</head>
<body>
<input type="button" value="顯示" id="btn1"/>
<input type="button" value="隱藏" id="btn2"/>
<div id="dv"></div>

</body>
</html>

案例:通過animate函式來做動畫

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    img{
      position: absolute;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>

    //引數1:鍵值對----css屬性和值
    //引數2:時間---1000毫秒---1秒
    //引數3:回撥函式
    $(function () {
      $("#im").animate({"width":"300px","height":"300px","left":"100px","top":"100px"},3000).animate({"width":"30px","height":"30px","left":"10px","top":"600px"},300).animate({"width":"50px","height":"50px","left":"800px","top":"20px","opacity":0.5},2000);
    });
  </script>
</head>
<body>
<img src="images/bird.png" alt="" id="im" />

</body>
</html>

案例:tab切換

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title</title>
    <style>
        *{
            padding:0;
            margin:0;
        }
        ul{
            list-style: none;
        }
        .wrapper{
            width:1000px;
            height:475px;
            margin:100px auto 0;
        }
        .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.12.2.js"></script>
    <script>
        $(function () {
            $(".tab>li").mouseenter(function () {
                $(this).addClass('active').siblings('li').removeClass('active');
                var index=$(this).index();
                $('.products>div:eq('+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="imgs/guojidapai.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="imgs/guozhuangmingpin.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="imgs/qingjieyongpin.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="imgs/nanshijingpin.jpg" alt=""/></a>
        </div>
    </div>
</div>
</body>
</html>

案例:隱藏動畫案例,排隊刪除

    *vertical-align: top;    去除底部間隙

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    div {
      width: 400px;
	  border:1px solid black;
    }

    img {
      width: 90px;
      height: 90px;
      vertical-align: top;
    }

  </style>
  <script src="jquery-1.12.2.js"></script>
  <script>
    $(function () {
      //第一個按鈕,隱藏
      $("#btn1").click(function () {
        $("div>img:last").hide(300,function f1() {
          $(this).prev().hide(300,f1);
        });
      });
      //第二個按鈕,顯示
      $("#btn2").click(function () {
          $("div>img:first").show(300,function f1() {
            $(this).next().show(300,f1);
          });
      });
    });

  </script>
</head>
<body>
<input type="button" value="隱藏動畫" id="btn1"/>
<input type="button" value="顯示動畫" id="btn2"/>
<div>
  <img src="images/1.jpg"/>
  <img src="images/2.jpg"/>
  <img src="images/3.jpg"/>
  <img src="images/4.jpg"/>
</div>
</body>
</html>

案例:點一個沒一個

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    div {
      width: 100px;
      height: 80px;
      margin: 2px;
      float: left;
    }

    img {
      width: 100px;
      height: 80px;
    }
  </style>
  <script src="jquery-1.12.2.js"></script>
  <script>
    $(function () {
         $("div").click(function () {
           $(this).hide(300);
         });
    });

  </script>
</head>
<body>
<div><img src="imagess/01.jpg"></div>
<div><img src="imagess/02.jpg"></div>
<div><img src="imagess/03.jpg"></div>
<div><img src="imagess/04.jpg"></div>
<div><img src="imagess/05.jpg"></div>
</body>
</html>

建立元素

        *除了子和進行關聯外:子  .appendTo (父)

        *還可以:  父 .append ( 子 )

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    div{
      width: 200px;
      height: 100px;
      border:5px solid red;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>
    $(function () {
      $("#btn").click(function () {
        //建立一個子級元素直接加到父級元素
        $("<a href='http://www.baidu.cn'>百度</a>").appendTo($("#dv"));
      });
    });
  </script>
</head>
<body>
<input type="button" value="建立一個a標籤" id="btn"/>
<div id="dv"></div>
</body>
</html>

注意:append  appendTo有點剪下的效果   而如果想實現克隆的效果需要通過clone方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title</title>
    <style>
        #dv1{
            width: 300px;
            height: 200px;
            border: 2px solid red;
            margin-bottom: 20px;
        }
        #dv2{
            width: 300px;
            height: 200px;
            border: 2px solid green;
        }
    </style>
    <script src="jquery-1.12.2.js"></script>
    <script>
        $(function () {
            $("#btn").click(function () {
                //把第一個div中的p標籤剪下到第二個div中
                $("#dv2").append($("#dv1>p"));
                $("#dv1>p").appendTo($("#dv2"));

                //把第一個div中的p標籤複製到第二個div中
                $("#dv1>p").clone().appendTo($("#dv2"));
            });
        });
    </script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>
<div id="dv1">
    <p>我是快樂的</p>
</div>
<div id="dv2"></div>
</body>
</html>

建立元素的第二種方式

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    div{
      width: 300px;
      height: 200px;
      border:1px solid red;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>
    $(function () {
      $("#btn").click(function () {
        //通過innerHTML的方式建立元素---以字串的方式
        $("#dv").html("<input type='button' value='按鈕'>");
      });

    });

  </script>
</head>
<body>
<input type="button" value="建立一個按鈕" id="btn"/>
<div id="dv">
  hello world!
</div>
</body>
</html>