jquery函數定義問題

參考:https://segmentfault.com/q/1010000004117497

參考:https://www.cnblogs.com/gfl123/p/8080484.html

參考:https://www.cnblogs.com/chris-oil/p/4862083.html (js中(function(){…})()立即執行函數寫法理解

 

一、函數執行問題
函數後面加上“()”就會執行,例如

$(this).keyup(alert(123));

這裏執行keyup函數,先要解析參數,發現參數是alert(123),肯定立馬先彈出123,然後繼續往下解析。例如

function fn(){
    alert(4);
}

fn(alert(3));

別把函數的引用和執行弄混了,好好理解下。

 

二、$()

$()這是jQuery的一個函數,也是最核心最基本的函數

功能一:傳入一個選擇器字符串,獲得這個選擇器對應的dom內容,保存在[]中,也就是俗稱的jQuery對象。例如

('#id')(‘.class’) $(‘tag’) 
功能二:傳入一個匿名函數,例如

$(function(){})//這個匿名函數在網頁載入完成後開始執行 
功能三:將JavaScript對象包裝成爲jQuery對象。例如

$(this)
$({a:1,b:2,c:3})
$(document.getElementById('idstr'))

this是javascript**自身的** 語法關鍵字,它指向一個javascript對象,所以可以使用所指向的目標javascript對象所擁有的方法, 但他自己不是一個普通的變量,所以你無法自己定義一個變量叫this

所以爲了使用jQuery對象的方法,你必須傳入jQuery函數$(this), 將javascript 對象包裝成爲一個jquery對象。

這裏的$(this)是一個JQuery對象,而jQuery對象沒有title 屬性,因此這樣寫是錯誤的。

JQuery擁有attr()方法可以get/set DOM對象的屬性,所以正確的寫法應該是這樣:

正確的代碼:

$("#textbox").hover(   
      function() {   
         $(this).attr(’title’, ‘Test’);   
      },   
      function() {   
         $(this).attr(’title’, ‘OK’);   
      }   
); 

使用jQuery的好處是它包裝了各種瀏覽器版本對DOM對象的操作,因此統一使用$(this)而不再用this應該是比較不錯的選擇。

jQuery中this與$(this)的區別就介紹到這裏。

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