1. 程式人生 > >前段學習——jQuery

前段學習——jQuery

dto view data ner append() lin one gray 類名

一、什麽是jQuery對象?

Query 對象就是通過jQuery包裝DOM對象後產生的對象。jQuery 對象是 jQuery 獨有的. 如果一個對象是 jQuery 對象, 那麽它就可以使用 jQuery 裏的方法: $(“#test”).html();

$("#test").html()    
       //意思是指:獲取ID為test的元素內的html代碼。其中html()是jQuery裏的方法 

       // 這段代碼等同於用DOM實現代碼: document.getElementById(" test ").innerHTML; 

       //雖然jQuery對象是包裝DOM對象後產生的,但是jQuery無法使用DOM對象的任何方法,同理DOM對象也不能使用jQuery裏的方法.亂使用會報錯
//約定:如果獲取的是 jQuery 對象, 那麽要在變量前面加上$. var $variable = jQuery 對象 var variable = DOM 對象 $variable[0]:jquery對象轉為dom對象 $("#msg").html(); $("#msg")[0].innerHTML

二、尋找元素 (選擇器和篩選器)

2.1選擇器:

2.1.1:基本選擇器

$("*")  $("#id")   $(".class")  $("element")  $(".class,p,div")

2.1.2:層級選擇器

$(".outer div")  $(".outer>div")   $(".outer+div")  $(".outer~div")

2.1.3:基本篩選器  

$("li:first")  $("li:eq(2)")  $("li:even") $("li:gt(1)")

2.1.4:屬性選擇器:

$(‘[id="div1"]‘)   $(‘["alex="sb"][id]‘)

2.1.5:表單選擇器

$("[type=‘text‘]")----->$(":text")         註意只適用於input標簽  : $("input:checked")

  

2.2:篩選器

2.2.1:過濾篩選器

$("li").eq(2)  $("li").first()  $("ul li").hasclass("test")

2.2.2:查找篩選器

 $("div").children(".test")   // 找到類名為 "test" 的所有 div 的子元素  
 $("div").find(".test")        // 搜索所有段落中的後代 元素
  
                              
 $(".test").next()         // 獲得匹配元素集合中每個元素緊鄰的同胞元素
  $(".test").nextAll()    //獲得匹配元素集合中每個元素的所有跟隨的同胞元素
$(".test").nextUntil()  //獲得每個元素所有跟隨的同胞元素,但不包括被選擇器、DOM 節點或已傳遞的 jQuery 對象匹配的元素
                    
       
 $("div").prev()          //獲得匹配元素集合中每個元素緊鄰的前一個同胞元素
 $("div").prevAll()      //獲得當前匹配元素集合中每個元素的前面的同胞元素
 $("div").prevUntil()   //方法獲得當前匹配元素集合中每個元素的前面的同胞元素
                        
 $(".test").parent()  //獲得當前匹配元素集合中每個元素的父元素
$(".test").parents()  //獲得當前匹配元素集合中每個元素的祖先元素
$(".test").parentUntil() // 獲得當前匹配元素集合中每個元素的祖先元素

 $("div").siblings()  //獲得匹配集合中每個元素的同胞

  

三、操作元素(屬性,css,文檔處理)

3.1:屬性操作

--------------------------屬性
$("").attr();   // 返回被選元素的屬性值 可以用來操控屬性
$("").removeAttr();//從被選元素中移除屬性
$("").prop(property,value);方法設置或返回被選元素的屬性和值
$("").removeProp();//會移除當前jQuery對象所匹配的每一個元素上指定名稱的屬性
--------------------------CSS類
$("").addClass(class|fn) //添加類名
$("").removeClass([class|fn]) //刪除類名
--------------------------HTML代碼/文本/值
$("").html([val|fn])  //返回或設置被選元素的內容,如果該方法未設置參數,則返回被選元素的當前內容
$("").text([val|fn])  //設置或返回被選元素的文本內容
$("").val([val|fn|arr]) //設置或返回當前所匹配元素的value值
---------------------------
$("").css("color","red")//方法返回或設置匹配的元素的一個或多個樣式屬性。

註意:

技術分享圖片
<input id="chk1" type="checkbox" />是否可見
<input id="chk2" type="checkbox" checked="checked" />是否可見



<script>

//對於HTML元素本身就帶有的固有屬性,在處理時,使用prop方法。
//對於HTML元素我們自己自定義的DOM屬性,在處理時,使用attr方法。
//像checkbox,radio和select這樣的元素,選中屬性對應“checked”和“selected”,這些也屬於固有屬性,因此
//需要使用prop方法去操作才能獲得正確的結果。


//    $("#chk1").attr("checked")
//    undefined
//    $("#chk1").prop("checked")
//    false

//  ---------手動選中的時候attr()獲得到沒有意義的undefined-----------
//    $("#chk1").attr("checked")
//    undefined
//    $("#chk1").prop("checked")
//    true

    console.log($("#chk1").prop("checked"));//false
    console.log($("#chk2").prop("checked"));//true
    console.log($("#chk1").attr("checked"));//undefined
    console.log($("#chk2").attr("checked"));//checked
</script>
attr 和 prop的註意事項

3.2:文檔處理

//創建一個標簽對象
    $("<p>")


//內部插入

    $("").append(content|fn)      ----->$("p").append("<b>Hello</b>");//在被選元素的結尾(仍然在內部)插入指定內容。
    $("").appendTo(content)       ----->$("p").appendTo("div");//append() 和 appendTo() 方法執行的任務相同。不同之處在於:內容和選擇器的位置,以及 append() 能夠使用函數來附加內容。
    $("").prepend(content|fn)     ----->$("p").prepend("<b>Hello</b>");//在被選元素的開頭插入指定內容
    $("").prependTo(content)      ----->$("p").prependTo("#foo");//與prepend()方法作用相同。差異在於語法:內容和選擇器的位置,以及 prepend() 能夠使用函數來插入內容。

//外部插入

    $("").after(content|fn)       ----->$("p").after("<b>Hello</b>");//在被選元素後插入指定的內容。
    $("").before(content|fn)      ----->$("p").before("<b>Hello</b>");//在被選元素之前插入指定的內容。
    $("").insertAfter(content)    ----->$("p").insertAfter("#foo");//在被選元素之後插入 HTML 標記或已有的元素。
    $("").insertBefore(content)   ----->$("p").insertBefore("#foo");//在您指定的已有子節點之前插入新的子節點

//替換
    $("").replaceWith(content|fn) ----->$("p").replaceWith("<b>Paragraph. </b>");//用指定的 HTML 內容或元素替換被選元素。

//刪除

    $("").empty()  //從被選元素移除所有內容,包括所有文本和子節點。
    $("").remove([expr])//移除被選元素,包括所有文本和子節點。該方法不會把匹配的元素從 jQuery 對象中刪除,因而可以在將來再使用這些匹配的元素。

//復制

    $("").clone([Even[,deepEven]])//生成被選元素的副本,包含子節點、文本和屬性。

3.3:css操作

CSS
        $("").css(name|pro|[,val|fn]) //返回或設置匹配的元素的一個或多個樣式屬性。
    位置
        $("").offset([coordinates]) //返回或設置匹配元素相對於文檔的偏移(位置)
        $("").position()//返回匹配元素相對於父元素的位置(偏移)。
        $("").scrollTop([val]) //返回或設置匹配元素的滾動條的垂直位置。
        $("").scrollLeft([val])//返回或設置匹配元素的滾動條的水平位置。
    尺寸
        $("").height([val|fn])//返回或設置匹配元素的高度
        $("").width([val|fn]) //返回或設置匹配元素的寬度
        $("").innerHeight()   //返回第一個匹配元素的內部高度。
        $("").innerWidth()   //返回第一個匹配元素的內部寬度。
        $("").outerHeight([soptions])//返回第一個匹配元素的外部高度。
        $("").outerWidth([options])//返回第一個匹配元素的外部寬度。

實例:進度條返回頂部

技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-2.2.3.js"></script>
    <script>


          window.onscroll=function(){

              var current=$(window).scrollTop();
              console.log(current)
              if (current>100){

                  $(".returnTop").removeClass("hide")
              }
              else {
              $(".returnTop").addClass("hide")
          }
          }


           function returnTop(){
//               $(".div1").scrollTop(0);

               $(window).scrollTop(0)
           }




    </script>
    <style>
        body{
            margin: 0px;
        }
        .returnTop{
            height: 60px;
            width: 100px;
            background-color: darkgray;
            position: fixed;
            right: 0;
            bottom: 0;
            color: greenyellow;
            line-height: 60px;
            text-align: center;
        }
        .div1{
            background-color: orchid;
            font-size: 5px;
            overflow: auto;
            width: 500px;
        }
        .div2{
            background-color: darkcyan;
        }
        .div3{
            background-color: aqua;
        }
        .div{
            height: 300px;
        }
        .hide{
            display: none;
        }
    </style>
</head>
<body>
     <div class="div1 div">
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>
         <p>hello</p>

     </div>
     <div class="div2 div"></div>
     <div class="div3 div"></div>
     <div class="returnTop hide" onclick="returnTop();">返回頂部</div>
</body>
</html>
View Code

四、事件

頁面載入
    ready(fn)  //當DOM載入就緒可以查詢及操縱時綁定一個要執行的函數。
    $(document).ready(function(){}) -----------> $(function(){})

事件處理
    $("").on(eve,[selector],[data],fn)  // 在選擇元素上綁定一個或多個事件的事件處理函數。

    //  .on的selector參數是篩選出調用.on方法的dom元素的指定子元素,如:
    //  $(‘ul‘).on(‘click‘, ‘li‘, function(){console.log(‘click‘);})就是篩選出ul下的li給其綁定
    //  click事件;

    [selector]參數的好處:
        好處在於.on方法為動態添加的元素也能綁上指定事件;如:

        //$(‘ul li‘).on(‘click‘, function(){console.log(‘click‘);})的綁定方式和
        //$(‘ul li‘).bind(‘click‘, function(){console.log(‘click‘);})一樣;我通過js給ul添加了一個
        //li:$(‘ul‘).append(‘<li>js new li<li>‘);這個新加的li是不會被綁上click事件的

        //但是用$(‘ul‘).on(‘click‘, ‘li‘, function(){console.log(‘click‘);}方式綁定,然後動態添加
        //li:$(‘ul‘).append(‘<li>js new li<li>‘);這個新生成的li被綁上了click事件
    
    [data]參數的調用:
             function myHandler(event) {
                alert(event.data.foo);
                }
             $("li").on("click", {foo: "bar"}, myHandler)

五、動畫效果

顯示隱藏

技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-2.1.4.min.js"></script>
    <script>

$(document).ready(function() {
    $("#hide").click(function () {
        $("p").hide(1000);
    });
    $("#show").click(function () {
        $("p").show(1000);
    });

//用於切換被選元素的 hide() 與 show() 方法。
    $("#toggle").click(function () {
        $("p").toggle();
    });
})

    </script>
    <link type="text/css" rel="stylesheet" href="style.css">
</head>
<body>


    <p>hello</p>
    <button id="hide">隱藏</button>
    <button id="show">顯示</button>
    <button id="toggle">切換</button>

</body>
</html>
View Code

滑動

技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-2.1.4.min.js"></script>
    <script>
    $(document).ready(function(){
     $("#slideDown").click(function(){
         $("#content").slideDown(1000);
     });
      $("#slideUp").click(function(){
         $("#content").slideUp(1000);
     });
      $("#slideToggle").click(function(){
         $("#content").slideToggle(1000);
     })
  });
    </script>
    <style>

        #content{
            text-align: center;
            background-color: lightblue;
            border:solid 1px red;
            display: none;
            padding: 50px;
        }
    </style>
</head>
<body>

    <div id="slideDown">出現</div>
    <div id="slideUp">隱藏</div>
    <div id="slideToggle">toggle</div>

    <div id="content">helloworld</div>

</body>
</html>
View Code

淡入淡出

技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-2.1.4.min.js"></script>
    <script>
    $(document).ready(function(){
   $("#in").click(function(){
       $("#id1").fadeIn(1000);


   });
    $("#out").click(function(){
       $("#id1").fadeOut(1000);

   });
    $("#toggle").click(function(){
       $("#id1").fadeToggle(1000);


   });
    $("#fadeto").click(function(){
       $("#id1").fadeTo(1000,0.4);

   });
});



    </script>

</head>
<body>
      <button id="in">fadein</button>
      <button id="out">fadeout</button>
      <button id="toggle">fadetoggle</button>
      <button id="fadeto">fadeto</button>

      <div id="id1" style="display:none; width: 80px;height: 80px;background-color: blueviolet"></div>

</body>
</html>
View Code

回調函數

技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-2.1.4.min.js"></script>

</head>
<body>
  <button>hide</button>
  <p>helloworld helloworld helloworld</p>



 <script>
   $("button").click(function(){
       $("p").hide(1000,function(){
           alert($(this).html())
       })

   })
    </script>
</body>
</html>
View Code

前段學習——jQuery