Jquery複習2

個人博客
Jquery複習1
jquery總結

一、元素的相關操作

1、元素的創建

法一

//點擊一個按鈕,創建一個按鈕
  $("#btn").click(function () {
   $("<input type='button' value='按鈕'>").appendTo($("#dv"));
  });

法二

  //元素創建的另一個方式
      $("#btn").click(function () {
        //通過innerHTML的方式創建元素---以字符串的方式   
        $("#dv").html("<input type='button' value='按鈕'>");
      });

2、元素的添加

$("#btn").click(function () {
        //把創建的span標籤這個子元素直接插入到div中第一個子元素的前面
        $("#dv").prepend($("<span>this is span</span>"));
        //主動的方式
        $("<span>this is span</span>").prependTo($("#dv"));
        //把元素添加到div的後面的位置,是div的下一個兄弟元素了
        $("#dv").after($("<span>this is span</span>"));
        //把元素添加到div的前面的位置,是div的上一個兄弟元素了
        $("#dv").before($("<span>this is span</span>"));
      });

3、元素的刪除

$("#btn").click(function () {
        //從父級元素中移除子級元素---移除所有的子元素
        $("#dv").html("");
        //清空父元素中的子元素
        $("#dv").empty();//清空
        //想要幹掉誰,直接找到這個元素,調用這個方法就可以了
        $("#dv").remove();//自殺---,不是清空
      });

4、案例:點擊按鈕創建,刪除表格,增加行

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    div {
      width: 600px;
      height: 450px;
      border: 1px solid red;
    }
  </style>
  <script src="./jquery.min.js"></script>
  <script>
    //案例:點擊按鈕在div中創建一個表格
    //表格數據的數組
    var arr = [
      { "name": "傳智播客", "href": "http://www.itcast.cn" },
      { "name": "快播", "href": "http://www.kuaibo.cn" },
      { "name": "優酷", "href": "http://www.youku.cn" },
      { "name": "愛奇藝", "href": "http://www.iqiyi.cn" },
      { "name": "B站", "href": "http://www.bili.cn" },
      { "name": "土豆", "href": "http://www.tudou.cn" }
    ];

    //頁面加載
    $(function () {
      //點擊按鈕創建表格
      $("#btn").click(function () {
        //創建表格
        var table = $("<table style='cursor: pointer' border='1' cellspacing='0' cellpadding='0'></table>");
        //把表格加入到div中
        $("#dv").append(table);
        //循環遍歷數組,創建行
        for (var i = 0; i < arr.length; i++) {
          var dt = arr[i];//每個數組元素,都是對象
          //創建行,並加入到table中
          var tr = $("<tr></tr>");
          table.append(tr);
          //在列中顯示內容,列在行中
          //創建td,並加入到tr中
          var td1 = $("<td>" + dt.name + "</td>");
          //第一個列加入到tr中
          tr.append(td1);
          var td2 = $("<td><a href='" + dt.href + "'>" + dt.name + "</a></td>");
          //第二個列加入到tr中
          tr.append(td2);

          //鼠標進入到每一行的時候,該行有高亮顯示的效果
          tr.mouseenter(function () {//鼠標進入
            $(this).css("backgroundColor", "green");
          }).mouseleave(function () {//鼠標離開
            $(this).css("backgroundColor", "");
          });
        }
      });

      //點擊按鈕移除表格
      $("#btn2").click(function () {
        //當前這個按鈕的下一個兄弟元素,清空裏面的子元素
        $(this).next().empty();
        console.log($(this).next());
        //$("#dv").empty();

        //所有的div中的第一個div
        //$("#dv").children("table").remove();
      });

      //點擊按鈕,在table中添加一行
      $("#btn3").click(function () {
        //創建一行
        var tr = $("<tr><td>騰訊</td><td><a href='http://.qq.com'>騰訊</a></td></tr>");
        //把這一行加入到table中
        $("#dv").children("table").append(tr);
      });
    });

  </script>
</head>

<body>
  <input type="button" value="創建一個表格" id="btn" />
  <input type="button" value="移除表格" id="btn2" />
  <input type="button" value="添加一行" id="btn3" />
  <div id="dv"></div>

</body>

</html>

二、元素的選中問題

1、attr

* .attr(參數1,參數2);-----設置某個屬性的值
    * .attr(參數1);-----獲取某個屬性的值
    *
    * 參數1:屬性的名字
    * 參數2:屬性的值
    *
    * .attr方法主要是操作元素的自定義屬性的,但是也可以操作元素的自帶的屬性(html中本身就有的屬性),但是,但可是:操作元素的選中的ckeched的時候,不是很合適!
    * 操作元素的選中的checked的時候,推薦使用prop方法

案例

<!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 () {
        //DOM中操作
        //document.getElementById("r3").checked=true;
        //jQuery操作
        //$("#r3").get(0).checked=true;//DOM的寫法
        //需要使用自定義屬性的方式
        //$("#r3").attr("checked",true);//設置
        //獲取是否被選中了
        //console.log($("#r3").attr("checked"));//undefined
 
        //如果標籤默認選中了---attr("checked")--->結果:checked
        //如果標籤沒有選中----attr("checked")---->結果:undefined
 
 
        //點擊按鈕,選中就設置不選中,如果沒有選中,就設置選中的結果
 
        //attr方法針對單選框或者是複選框的是否選中問題,操作起來很麻煩,幾乎不用,後面說
        if($("#r3").attr("checked")==undefined){
          //undefined
          $("#r3").attr("checked",true);
          console.log("哈哈");
        }else{
          //checked--->選中了
          $("#r3").attr("checked",false);
          console.log("嘎嘎");
        }
      });
    });
  </script>
</head>
<body>
<input type="button" value="選中" id="btn"/><br/>
請選擇小蘇的性別:
<input type="radio" value="1" name="sex"/><input type="radio" value="2" name="sex"/><input type="radio" value="3" name="sex" id="r3"/>人妖
 
</body>
</html>

2、prop():複選框選中

*設置或者是獲取元素的選中的問題
       * 推薦使用prop()方法
       * .prop("屬性",值); 值一般是布爾類型----->目前這麼寫代碼是設置選中
       * .prop("屬性");-----獲取這個元素是否選中

三、元素的操作

1、操作元素

* 可以設置,也可以獲取
    * .width()是元素的寬
    * .height()是元素的高
    *
    * .offset()--->獲取的是對象,可以設置,也可以獲取
    * .offset({"left":值,"top":值});設置
    *

2、元素的捲曲距離

獲取元素向上捲曲出去的距離,  scrollTop()--->方法,數字類型
獲取元素向左捲曲出去的距離,  scrollLeft()--->方法,數字類型
div滾動上下滾動條的時候,一直獲取他的向上捲曲出去的值

四、事件

1、爲元素綁定事件

爲元素綁定事件三種方式
    * 對象.事件名字(事件處理函數);---$("#btn").click(function(){});
    * 對象.bind("事件名字",事件處理函數);---$("#btn").bind("click",function(){});
* 父級對象.delegate("子級元素","事件名字",事件處理函數);---->$("#dv").delegate("p","click",function(){});

2、爲元素解綁事件

bind---unbind
* bind括號中寫什麼事件的名字就會把這個事件解綁,會把這個元素的這個點擊的多個事件都會解綁
* 對象.click()這種方式添加的事件也可以使用unbind解綁
$("#dv").unbind("click");
括號中沒有任何參數,此時該元素的所有的事件全部解綁
$("#dv").unbind();
同時解綁多個事件---每個事件的名字中間用空格即可
$("#dv").unbind("mouseenter mouseleave")
delegate---undelegate
* p的點擊事件沒有了,移除了p的所有的事件
$("#dv").undelegate();
* 移除的是p的點擊事件
$("#dv").undelegate("p","click");
* 可以移除多個事件,但是每個事件之間用空格隔開
$("#dv").undelegate("p","click mouseenter");
on---off
* 父級元素和子級元素的所有的事件全部解綁
$("#dv").off();
* 把父級元素和子級元素的點擊事件解綁
$("#dv").off("click");
* 父級元素和子級的元素的多個事件,中間用空格
$("#dv").off("click mouseenter");
* 解綁p標籤的點擊事件
$("#dv").off("click","p");
* p的兩個事件都沒了
$("#dv").off("click mouseenter","p");
        p的所有的事件全部解綁
        $("#dv").off("","p");
        幹掉div中所有的子元素的點擊事件
        $("#dv").off("click","**");
     

3、阻止事件冒泡 : reture false

$(function () {
      $("#dv1").click(function () {
        //爲什麼是undefined
        //對象.id----->DOM中的
        console.log($(this).attr("id"));
      });
      $("#dv2").click(function () {
        console.log($(this).attr("id"));
      });
      $("#dv3").click(function () {
        console.log($(this).attr("id"));
        return false;
      });
    });

4、事件的觸發

調用文本框的獲取焦點的事件---第一種方式讓別的元素的事件觸發
        1、對象.事件名字();
         $("#txt").focus();
        2、第二種觸發事件的方式
         $("#txt").trigger("focus");//觸發的意思
        3、 這種方式可以觸發該事件,但是,不能觸發瀏覽器的默認的行爲
         $("#txt").triggerHandler("focus");

5、事件對象參數

在事件對象中傳入參數,返回值爲對象
在這裏插入圖片描述

五、each方法

隱式迭代—內部幫助我們循環遍歷做操作
每個元素做不同的操作的時候
each方法,幫助我們遍歷jQuery的對象

$(function () {
      //獲取所有的li,針對每個li的透明進行設置
      $("#uu>li").each(function (index,ele) {
        //參數1:索引,參數2:對象
        //console.log(arguments[0]+"===="+arguments[1]);
        //每個li的透明度不一樣
        var opacity=(index+1)/10;
        $(ele).css("opacity",opacity);
      });
    });
```qq
each方法就是用來遍歷jQuery對象的,但是,裏面的每個對象最開始都是DOM對象,如果想要使用jQuery的方法,需要把DOM對象轉jQuery對象
### 六、幾個屬性

innerWidth()/innerHeight() 方法返回元素的寬度/高度(包括內邊距)。
outerWidth()/outerHeight() 方法返回元素的寬度/高度(包括內邊距和邊框)。
outerWidth(true)/outerHeight(true) 方法返回元素的寬度/高度(包括內邊距、邊框和外邊距)。




 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章