1. 程式人生 > >一篇jquery知識 讓你快速瞭解jquery

一篇jquery知識 讓你快速瞭解jquery

1.釋放 使

:
j Q u e r y
的使用權** 注意點: 釋放操作必須在編寫其它jQuery程式碼之前編寫 釋放之後就不能再用
,改為使用jQuery
jQuery原理.noConflict();
var nj = jQuery.noConflict(); nj(function () { alert("hello lnj"); });

2、靜態方法和例項方法
// 1.定義一個類

       function AClass() {
       }
       // 給這個類新增一個靜態方法
       // 直接新增給類的就是靜態方法
       AClass.staticMethod = function () {
           alert("staticMethod");
       }
       // 靜態方法通過類名呼叫
       AClass.staticMethod();
 //給這個類新增一個例項方法
        AClass.prototype.instanceMethod = function () {
            alert("instanceMethod");
        }
        // 例項方法通過類的例項呼叫
        // 建立一個例項(建立一個物件)
        var a = new AClass();
        // 通過例項呼叫例項方法
        a.instanceMethod();

each方法:

        第一個引數: 當前遍歷到的索引
        第二個引數: 遍歷到的元素
        注意點:
        jQuery的each方法是可以遍歷偽陣列的
        */
        // $.each(arr, function (index, value) {
        //     console.log(index, value);
        // });
        $.each(obj, function (index, value) {
            console.log(index, value);
        });

map方法

    第一個引數: 要遍歷的陣列
    第二個引數: 每遍歷一個元素之後執行的回撥函式
    回撥函式的引數:
    第一個引數: 遍歷到的元素
    第二個引數: 遍歷到的索引
    注意點:
    和jQuery中的each靜態方法一樣, map靜態方法也可以遍歷偽陣列
    */
    // $.map(arr, function (value, index) {
    //     console.log(index, value);
    // });
    var res = $.map(obj, function (value, index) {
        console.log(index, value);
        return value + index;
    });

    var res2 = $.each(obj, function (index, value) {
        console.log(index, value);
        return value + index;
    });
     console.log(res);
    console.log(res2);

``

jQuery中的each靜態方法和map靜態方法的區別:
1. each靜態方法預設的返回值就是, 遍歷誰就返回誰
2. map靜態方法預設的返回值是一個空陣列
3. each靜態方法不支援在回撥函式中對遍歷的陣列進行處理
4. map靜態方法可以在回撥函式中通過return對遍歷的陣列進行處理, 然後生成一個新的陣列返回

holdReady方法

$.holdReady(true); 作用: 暫停ready執行

3.內容選擇器

:empty 作用:找到既沒有文字內容也沒有子元素的指定元素
:parent 作用: 找到有文字內容或有子元素的指定元素
:contains(text) 作用: 找到包含指定文字內容的指定元素
:has(selector) 作用: 找到包含指定子元素的指定元素

4. getAttribute() attr()
DOM元素.setAttribute(“屬性名稱”, “值”);
DOM元素.getAttribute(“屬性名稱”);

    <body>
    <span name = "it666"></span>
    <script src="js/jquery-3.3.1.js"></script>
    <script>
        $(function () {
            var span=document.querySelector('span');
            //獲取的div是[object HTMLDivElement]
            console.log(span.getAttribute("name"));
        })
    </script>
    </body>

5.attr(name|pro|key,val|fn)

<body>
<span name = "it666"></span>
<script src="js/jquery-3.3.1.js"></script>
<script>
    $(function () {
       $("span").attr("name");
    })
</script>
</body>

主要區別

呼叫 getAttribute() 的主體必須是元素(Element) 不可用$()訪問
呼叫 attr() 的主體必須是物件(Object) 不可用Element訪問

6.prop方法
特點和attr方法一致
注意點:

   prop方法不僅能夠操作屬性, 他還能操作屬性節點
    **官方推薦**:在操作屬性節點時,具有 true 和 false 兩個屬性的屬性節點,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()

7.jquery操作類相關的方法
1.addClass(class|fn)
作用: 新增一個類
如果要新增多個, 多個類名之間用空格隔開即可
2。removeClass([class|fn])
作用: 刪除一個類
如果想刪除多個, 多個類名之間用空格隔開即可
3.toggleClass(class|fn[,sw])
作用: 切換類
有就刪除, 沒有就新增

8.jquery操作文字相關方法
1.html([val|fn])
和原生JS中的innerHTML一模一樣
2.text([val|fn])
和原生JS中的innerText一模一樣
3.val([val|fn|arr]) 操作有value屬性的元素

9.jquery位置和尺寸操作方法
1.offset() 作用: 獲取元素距離視窗的偏移位
2.position() 作用: 獲取元素距離定位元素的偏移位

注意:原生js中的offsetLeft相當於position() offsetLeft必須用Element主體呼叫 與jquery的offset()不一樣

10.srollTop()方法
作用: 獲取滾動的偏移位
注意點: 為了保證瀏覽器的相容, 獲取網頁滾動的偏移位需要按照如下寫法

// 設定網頁滾動偏移位
 // 注意點: 為了保證瀏覽器的相容, 設定網頁滾動偏移位的時候必須按照如下寫法
 $("html,body").scrollTop();

11、事件繫結 jQuery中有兩種繫結事件方式

 1.eventName(fn);
    編碼效率略高/ 部分事件jQuery沒有實現,所以不能新增
2.on(eventName, fn);
    編碼效率略低/ 所有js事件都可以新增

注意:js中有HTML DOM addEventListener() 方法繫結事件的方式
12、事件移除 off();
off方法如果不傳遞引數, 會移除所有的事件
off方法如果傳遞一個引數, 會移除所有指定型別的事件
$("button").off("click");
off方法如果傳遞兩個引數, 會移除所有指定型別的指定事件
$("button").off("click", test1);

13、事件冒泡和預設行為
阻止事件冒泡:
if(event && event.stopPropagation){ event.stopPropagation() }else { window.event.cancelable=true; };
阻止預設行為: event.preventDefault();

14.事件自動觸發
trigger: 如果利用trigger自動觸發事件,會觸發事件冒泡
triggerHandler: 如果利用triggerHandler自動觸發事件, 不會觸發事件冒泡

15、jquery自定義事件
想要自定義事件, 必須滿足兩個條件
1.事件必須是通過on繫結的
2.事件必須通過trigger來觸發

  $(".son").myClick(function (event) {
          alert("son");
       });
` $(".son").on("myClick", function () {
                alert("son");
       });
  $(".son").triggerHandler("myClick");

自定義名稱空間
想要事件的名稱空間有效,必須滿足兩個條件
1.事件是通過on來繫結的
2.通過trigger觸發事件

 $(".son").on("click.zs", function () {
                alert("click1");
            });
            $(".son").on("click.ls", function () {
                alert("click2");
            });
            // $(".son").trigger("click.zs");
            $(".son").trigger("click.ls");

**16、jquery自定義動畫 animate({}) **
delay方法的作用就是用於告訴系統延遲時長

	 第一個引數: 接收一個物件, 可以在物件中修改屬性
            第二個引數: 指定動畫時長
            第三個引數: 指定動畫節奏, 預設就是swing
            第四個引數: 動畫執行完畢之後的回撥函式

17、事件委託delegate() 方法
delegate() 方法為指定的元素(屬於被選元素的子元素)新增一個或多個事件處理程式,並規定當這些事件發生時執行的函式。

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//事件委託
  $("div").delegate("button","click",function(){
    $("p").slideToggle();
  });
});
</script>
</head>
<body>
<div style="background-color:red">
<p>這是一個段落。</p>
<button>請點選這裡</button>
</div>

</body>
</html>