1. 程式人生 > 其它 >js行內式遇到的一些問題 DOM物件和jq物件轉換的問題

js行內式遇到的一些問題 DOM物件和jq物件轉換的問題

這兩天給後臺頁面做頁面,我的工作比較簡單,只需要寫結構和樣式就行了,寫好之後,後端大哥用ajax重寫頁面載入資料,順便給標籤新增選中事件,做選中後變色的處理,但是卻遇到一個問題,一直選不到觸發事件這個物件。簡單還原始碼如下

<button id='btn' onclick='check()' name='abc' value='123'>類別</button>
<script>
function check() {
    console.log($(this).name);
}
</script>

遇到的問題就是,一直取不到這個button物件,列印$(this)得到的結果是【window】,後來發現,要解決要注意3個地方:

1,、函式裡要穿參即function check(obj),注意這裡的形參不能寫this,其他的都可以。

2、在html呼叫的標籤裡呼叫方法時,要穿實參,即 <button onclick='check(this)' name='abc'>類別</button>。

3、如果用jq的$方法,寫法要注意,如果想用$()這樣的jq物件呼叫js的value方法,必須在後面加個get(0),即

$('#btn').get(0).value //123;

$("#btn")得到的是jquery封裝的物件,裡面提供了jquery的一些方法,並不是html原生物件,通過get(0)才能取到jquery物件裡面關聯的html物件,從而操作html物件的屬性和方法。

這裡涉及到DOM物件和jq物件的轉換問題

jQuery物件轉成DOM物件:  兩種轉換方式將一個jQuery物件轉換成DOM物件:[index]和.get(index);  (1)jQuery物件是一個數據物件,可以通過[index]的方法,來得到相應的DOM物件。  如:var $v =$("#v") ; //jQuery物件  var v=$v[0]; //DOM物件  alert(v.checked) //檢測這個checkbox是否被選中  (2)jQuery本身提供,通過.get(index)方法,得到相應的DOM物件  如:var $v=$("#v"); //jQuery物件  var v=$v.get(0); //DOM物件  alert(v.checked) //檢測這個checkbox是否被選中

DOM物件轉成jQuery物件: 對於已經是一個DOM物件,只需要用$()把DOM物件包裝起來,就可以獲得一個jQuery物件了。$(DOM物件)  如:var v=document.getElementById("v"); //DOM物件  var $v=$(v); //jQuery物件  轉換後,就可以任意使用jQuery的方法了。 

可能表述的並不完全準確,如果有錯歡迎指正,因為現在寫程式碼很少用行內式,所以這個問題還是蠻有趣的,這裡指提供解決方法,原理有待我進一步學習,哪些能做形參哪些能做實參,還需要深入瞭解。