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

jQuery學習記錄三

元素新增方法

    *注意兩者之間的區別:prepend()方法,新增的位置是元素的第一個子元素

    *before()、after()方法新增的兄弟節點

<!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.2.js"></script>
    <script>
        $(function () {

            //點選按鈕,建立元素
            $("#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>"));
            });
        });
    </script>
</head>
<body>
<input type="button" value="建立一個按鈕" id="btn"/>
<div id="dv">
    <p>這是一個p</p>
</div>
<p>這是div後面的第一個子元素</p>
</body>
</html>

元素的移除

    *empty()只是清空,remove()方法是自殺。。。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title</title>
    <style>
        div{
            width: 200px;
            height: 100px;
            border: 2px solid red;
        }
    </style>
    <script src="jquery-1.12.2.js"></script>
    <script>
        //頁面載入
        $(function () {
            //點選按鈕
            $("#btn").click(function () {
                //從父級元素中移除子級元素---移除所有的子元素
                //$("#dv").html("");
                //清空父元素中的子元素
                $("#dv").empty();//清空
                //想要幹掉誰,直接找到這個元素,呼叫這個方法就可以了
                //$("#dv").remove();//自殺---
            });
        });
    </script>
</head>
<body>
<input type="button" value="移除元素" id="btn"/>
<div id="dv">
    <p>這是一個p</p>
    <span>這是一個span</span>
</div>
</body>
</html>

案例:許可權的設定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title</title>
    <style>
    </style>
    <script src="jquery-1.12.2.js"></script>
    <script>
        //頁面載入
        $(function () {
            $("#toright").click(function () {
                $('#se1>option:selected').appendTo($('#se2'));
            });
            $("#toleft").click(function () {
                $('#se2>option:selected').appendTo($('#se1'));
            });
            $("#toallright").click(function () {
                $('#se1>option').appendTo($('#se2'));
            });
            $("#toAllLeft").click(function () {
                $('#se2>option').appendTo($('#se1'));
            });
        });
    </script>
</head>
<body>
<div style="margin-left:500px;margin-top:20px;">
    <select multiple="multiple" style="float:left;width: 60px;height: 100px;" id="se1">
        <option>新增</option>
        <option>刪除</option>
        <option>修改</option>
        <option>查詢</option>
        <option>列印</option>
    </select>
    <div style="width: 50px;float: left;">
        <input type="button" name="name" value=">" style="width:50px;" id="toRight">
        <input type="button" name="name" value="<" style="width:50px;" id="toLeft">
        <input type="button" name="name" value=">>" style="width:50px;" id="toAllRight">
        <input type="button" name="name" value="<<" style="width:50px;" id="toAllLeft">
    </div>
    <select multiple="multiple" style="float:left;width: 60px;height: 100px;" id="se2">
    </select>
</div>
</body>
</html>

value屬性的獲取和設定

    *select那個標籤選中的方式有點怪異。。。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title</title>
    <script src="jquery-1.12.2.js"></script>
    <script>
        $(function () {
            $("#btn").click(function () {
           //點選按鈕,獲取文字框的value屬性,和設定
          console.log($("#txt").val());
          $("#txt").val("今天天氣一點也不好");
                //點選按鈕設定單選框的value屬性
                //$("#r2").val("哦天啊");                 設定標籤的value屬性
                //$("#ck3").val("改了");
                //獲取文字域中的value值
                console.log($("#tt2").val());            這兩種方式都可以獲取文字域中的值
                console.log($("#tt2").text());
                //設定文字域中的文字內容--可以設定的
                $("#tt2").val("小蘇好猥瑣哦,哈哈");
                //推薦使用下面的方式-----jQuery的寫法
                $("#tt2").text("好神奇哦");              文字推薦方法


                //為select標籤中value屬性是5的這個option標籤選中
                //$("#s1").val(5);//選中的意思,

            });
        });
    </script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>
<input type="text" value="今天天氣很好" id="txt" /><br/>
<input type="radio" value="1" name="sex"/>男
<input type="radio" value="2" name="sex" id="r2"/>女
<input type="radio" value="3" name="sex"/>保密
<br/>
<input type="checkbox" value="1" />吃飯
<input type="checkbox" value="2" />睡覺
<input type="checkbox" value="3" id="ck3"/>打豆豆
<input type="checkbox" value="4" />打鉛球
<br/>
<textarea name="tt" id="tt2" cols="30" rows="10">
  hello world!
</textarea>

<select id="s1">
    <option value="1">妲己</option>
    <option value="2">王昭君</option>
    <option value="3">西施</option>
    <option value="4">貂蟬</option>
    <option value="5">小喬</option>
    <option value="6">大喬</option>
    <option value="7">武則天</option>
</select>

</body>
</html>

元素選中的問題

        //DOM中操作
        //document.getElementById("r3").checked=true;
        //jQuery操作
        //$("#r3").get(0).checked=true;//DOM的寫法

   獲取:

       *注:attr方法針對單選框或者是複選框的是否選中問題,操作起來很麻煩,幾乎不用,後面說

        //獲取是否被選中了
        //console.log($("#r3").attr("checked"));          未選中預設為 undefined

        //同樣也可以通過這種方式來進行值的設定

        //$("#r3").attr("checked",true);//設定

<!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 () {
        選擇性別之後,點選選中
        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>

自定義屬性

    * .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 () {
        //$("#uu>li").attr("score",100);

        $("#ak").attr("href","http://www.baidu.com");
        $("#ak").text("百度");
      });
    });
  </script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>
<a id="ak"></a>
<ul id="uu">
  <li>小白</li>
  <li>小黑</li>
  <li>小紅</li>
  <li>小綠</li>
</ul>
</body>
</html>

設定或者是獲取元素的選中的問題
       * 推薦使用prop()方法
       * .prop("屬性",值); 值一般是布林型別----->目前這麼寫程式碼是設定選中
       * .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 () {
        // $("#ck7").attr("checked",true);
        //獲取複選框是否選中
        //console.log($("#ck7").prop("checked"));
        $("#ck7").prop("checked", true);
      });
    });
  </script>
</head>
<body>
<input type="button" value="選中/不選中" id="btn"/>
<input type="checkbox" value="1" name="play"/>吃飯
<input type="checkbox" value="6" name="play"/>打鉛球
<input type="checkbox" value="7" name="play" id="ck7"/>打小蘇
</body>
</html>

案例:選中和不選中切換

<!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 () {
        //點一下,選中了,再點,就不再選中了,
        if($("#ck").prop("checked")){
          //選中了,就應該變成不是選中的狀態
          $("#ck").prop("checked",false);
        }else{
          $("#ck").prop("checked",true);
        }
      });
    });
  </script>
</head>
<body>
<input type="button" value="選中/不選中" id="btn"/>
<input type="checkbox" value="1" name="play" id="ck" />玩遊戲
</body>
</html>

案例:全選/全不選

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

    .wrap {
      width: 300px;
      margin: 100px auto 0;
    }

    table {
      border-collapse: collapse;
      border-spacing: 0;
      border: 1px solid #c0c0c0;
    }

    th,
    td {
      border: 1px solid #d0d0d0;
      color: #404060;
      padding: 10px;
    }

    th {
      background-color: #09c;
      font: bold 16px "微軟雅黑";
      color: #fff;
    }

    td {
      font: 14px "微軟雅黑";
    }

    tbody tr {
      background-color: #f0f0f0;
    }

    tbody tr:hover {
      cursor: pointer;
      background-color: #fafafa;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>
    $(function () {
      //thead標籤中的複選框----全選和全不選
      $("#j_cbAll").click(function () {
        //直接設定tbody中複選框的選中狀態和當前點選的複選框的選中狀態一致
        $("#j_tb").find("input").prop("checked",$(this).prop("checked"));
      });

      //每個複選框都要註冊點選事件
      $("#j_tb").find("input").click(function () {
        var ckLength=$("#j_tb").find("input").length;
        var checkedLenth=$("#j_tb :checked").length;
        $("#j_cbAll").prop("checked",checkedLenth==ckLength);
      });

    });
  </script>
</head>

<body>
<div class="wrap">
  <table>
    <thead>
    <tr>
      <th>
        <input type="checkbox" id="j_cbAll"/>
      </th>
      <th>課程名稱</th>
      <th>所屬學院</th>
    </tr>
    </thead>
    <tbody id="j_tb">
    <tr>
      <td>
        <input type="checkbox"/>
      </td>
      <td>JavaScript</td>
      <td>前端與移動開發學院</td>
    </tr>
    <tr>
      <td>
        <input type="checkbox"/>
      </td>
      <td>css</td>
      <td>前端與移動開發學院</td>
    </tr>
    <tr>
      <td>
        <input type="checkbox"/>
      </td>
      <td>html</td>
      <td>前端與移動開發學院</td>
    </tr>
    <tr>
      <td>
        <input type="checkbox"/>
      </td>
      <td>jQuery</td>
      <td>前端與移動開發學院</td>
    </tr>
    </tbody>
  </table>
</div>
</body>
</html>

設定元素寬高的兩種方式

    *數值屬性的設定,一定要注意獲取的屬性值的資料型別。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    div{
      width: 200px;
      height: 100px;
      background-color: darkorchid;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>

    //元素的寬和高,jQuery中封裝了方法
    /*
    * .width()可以獲取也可以設定元素的寬
    * .height()可以獲取也可以設定元素的高
    *
    *
    * */
    //把獲取元素計算後的樣式屬性值的相容程式碼:寫兩遍

    $(function () {

      $("#btn").click(function () {
        //點選按鈕,設定div的寬和高為原來的2倍

        //.css方法獲取的寬和高實際上是字串型別

        //獲取div的寬和高
//        var w=$("#dv").css("width");
//        var h=$("#dv").css("height");
//        //設定div的寬和高
//        $("#dv").css("width",(parseInt(w)*2)+"px");
//        $("#dv").css("height",(parseInt(h)*2)+"px");


        //先獲取
//        var w=$("#dv").width();
//        var h=$("#dv").height();
//        console.log(w);
//        $("#dv").css("width",w*2);
//        $("#dv").css("height",h*2);

//        $("#dv").width(300);
//        $("#dv").height(400);

      });
    });
  </script>
</head>
<body>
<input type="button" value="設定元素的寬和高" id="btn" />
<div id="dv"></div>
</body>
</html>

設定元素的位置

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

      position: absolute;
      left:100px;
      top:200px;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>
    //點選按鈕,設定div的left和top的值是原來的2倍
    $(function () {
      $("#btn").click(function () {
        //獲取left和top  ---獲取的仍然是字串型別
//        var l=$("#dv").css("left");
//        var t=$("#dv").css("top");
//        //console.log(l);
//        var left1=parseInt(l)*2;
//        var top1=parseInt(t)*2;
//        $("#dv").css("left",left1+"px");
//        $("#dv").css("left",top1+"px");


        //該方法獲取的是一個物件,該物件中有兩個屬性,left和top
        //left和top包含left和margin-left和top和margin-top的值
        //console.log($("#dv").offset().left);

        $("#dv").css("left",$("#dv").offset().left*2);
        $("#dv").css("top",$("#dv").offset().top*2);

        $("#dv").offset({"left":500,"top":250});
      });
    });


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

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

</body>
</html>

scroll系列:卷取值的獲取
    /*
    * DOM中的
    * scrollLeft:向左捲曲出去的距離的值
    * scrollTop:向上捲曲出去的距離的值
    * scrollWidth:元素中內容的實際的寬
    * scrollHeight:元素中內容的實際的高

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    div{
      width: 300px;
      height: 200px;
      border: 1px solid red;
      overflow: auto;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>
    //div滾動上下滾動條的時候,一直獲取他的向上捲曲出去的值
$(function () {
  $("#dv").scroll(function () {
    console.log($(this).scrollTop());     其他的值獲取方式類似
  });
});
  </script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>
<div id="dv">
  hello world!
  ...more...
</div>

</body>
</html>

為元素繫結事件的5中寫法

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <script src="jquery-1.12.1.js"></script>
  <script>
    $(function () {

      //為按鈕繫結滑鼠進入,滑鼠離開,點選事件
      //第一種寫法
//      $("#btn").mouseenter(function () {
//        $(this).css("backgroundColor","red");
//      });
//      $("#btn").mouseleave(function () {
//        $(this).css("backgroundColor","green");
//      });
//      $("#btn").click(function () {
//        alert("啊~我被點了");
//      });

      //第二種寫法:鏈式程式設計
//      $("#btn").mouseenter(function () {
//        $(this).css("backgroundColor","red");
//      }).mouseleave(function () {
//        $(this).css("backgroundColor","green");
//      }).click(function () {
//        alert("啊~我被點了");
//      });

      //第三種寫法:bind方法繫結事件
//      $("#btn").bind("click",function () {
//        alert("哦買雷電嘎嘎鬧");
//      });
//      $("#btn").bind("mouseenter",function () {
//        $(this).css("backgroundColor","red");
//      });
//      $("#btn").bind("mouseleave",function () {
//        $(this).css("backgroundColor","green");
//      });

      //第四種寫法:鏈式程式設計
//      $("#btn").bind("click",function () {
//        alert("哦買雷電嘎嘎鬧");
//      }).bind("mouseenter",function () {
//        $(this).css("backgroundColor","red");
//      }).bind("mouseleave",function () {
//        $(this).css("backgroundColor","green");
//      });
      //第五種寫法:使用鍵值對的方式繫結事件
//      $("#btn").bind({"click":function () {
//        alert("哦買雷電嘎嘎鬧");
//      },"mouseenter":function () {
//        $(this).css("backgroundColor","red");
//      },"mouseleave":function () {
//        $(this).css("backgroundColor","green");
//      }});
    });
  </script>
</head>
<body>
<input type="button" value="顯示效果" id="btn" />

</body>
</html>

為元素繫結多個事件

<!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 () {
//        console.log("小蘇好猥瑣哦");
//      }).click(function () {
//        console.log("小蘇好美啊");
//      }).click(function () {
//        console.log("天冷了,注意身體");
//      });

//      $("#btn").bind("click",function () {
//        console.log("哈哈,我又變帥了");
//      }).bind("click",function () {
//        console.log("hello world!");
//      });

      //bind方法繫結多個相同的事件的時候,如果使用的是鍵值對的方式,只能執行最後一個
      $("#btn").bind({"click":function () {
        console.log("oh my god!");
      },"click":function () {
        console.log("you jump i jump");
      }});

    });

    //bind方法內部是呼叫的另一個方法繫結的事件

  </script>
</head>
<body>
<input type="button" value="顯示效果" id="btn"/>

</body>
</html>

另類的繫結事件:父元素被點選,子元素繫結事件。。。

    * 物件.事件名字(事件處理函式);---$("#btn").click(function(){});
    * 物件.bind("事件名字",事件處理函式);---$("#btn").bind("click",function(){});
    * 父級物件.delegate("子級元素","事件名字",事件處理函式);---->$("#dv").delegate("p","click",function(){});
    *

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    div{
      width: 200px;
      height: 100px;
      border: 2px solid green;
    }
    p{
      width: 150px;
      height: 50px;
      border: 1px solid red;
      cursor: pointer;
    }
  </style>
  <script src="jquery-1.12.1.js"></script>
  <script>
    //點選按鈕為div中的p標籤繫結事件
    $(function () {
      $("#btn").click(function () {
        //為父級元素繫結事件,父級元素代替子級元素繫結事件
        //子級元素委託父級繫結事件

        //父級元素呼叫方法,為子級元素繫結事件
        $("#dv").delegate("p","click",function () {
          alert("啊!~,被點了");
        });
      });
    });

  </script>
</head>
<body>
<input type="button" value="為div繫結事件" id="btn" />
<div id="dv">
  <p>這是p</p>
</div>
</body>
</html>

案例:固定導航欄jQuery實現

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>防騰訊固定導航欄</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        .main {
            width: 1000px;
            margin: 0 auto;
        }
        /*.top {
            height: 171px;
        }
        .nav {
            height: 86px;
        }*/
    </style>
    <script src="jquery-1.12.2.js"></script>
    <script>
      $(function () {
        //瀏覽器的滾動條上下移動的時候,設定頁面中的nav的div固定在頁面的頂部或者是回到原來的位置

        //為瀏覽器註冊滾動的事件
        $(window).scroll(function () {
          //獲取頁面的向上捲曲出去的距離的值
          //如果向上捲曲出去的距離的值大於或者是等於第一個div的高度
          if($(this).scrollTop()>=$(".top").height()){
            //設定導航欄固定在頁面的頂部
            $(".nav").css("position","fixed");
            //設定導航欄在頂部的值是0
            $(".nav").css("top",0);
            //設定.main的div的位置,不是直接跳上去的
            $(".main").css("marginTop",$(".nav").height());
          }else{
            //恢復
            $(".nav").css("position","static");
            $(".main").css("marginTop",0);
          }
        });
      });

    </script>
</head>

<body>
<div class="top">
    <img src="images/top.png" />
</div>
<div class="nav">
    <img src="images/nav.png" />
</div>
<div class="main">
    <img src="images/main.png" />
</div>
</body>

</html>