起初以為this和$(this)就是一模子刻出來。但是我在閱讀時,和coding時發現,總不是一回事。
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-cn">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
- <script>!window.jQuery && document.write('<script src="js/jquery-1.4.2.min.js"><\/script>')
- </script>
- <script type="text/javascript">
- $(document).ready(function(){
- $("span").click(function(){
- alert($(this).html()); //把DOM的this對象包裝成jq對象
- });
- });
- </script>
- </head>
- <body>
- <span>aaa</span>
- <span>bbb</span>
- <span>ccc</span>
- <span>ddd</span>
- <select name="btn" id="btn" >
- <option value="1">日志標題</option>
- <option value="2">日志全文</option>
- <option value="3">評論引用</option>
- <option value="4">所有留言</option>
- <option value="5">頁面搜索</option>
- </select>
- <script type="text/javascript">
- $("#btn").bind("click",function(){
- alert($(this).val());
- })
- $("#btn").click(function(){
- alert($(this).html()); //把DOM的this對象包裝成jq對象
- });
- </script>
- </body>
http://neatstudio.com/show-833-1.shtml
javascript中onclick(this) 中的this指當前什么東西?
this就是當前標簽本身
onclick=xxx(this)表示一個單擊事件,來進行調用xxx(this)這個JavaScript函數。而xxx(this)函數中的this表示你要進行單擊對象的本身。
把this當做參數傳到函數中去,實踐Ok:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-cn">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
- <script>!window.jQuery && document.write('<script src="js/jquery-1.4.2.min.js"><\/script>')
- </script>
- <button id="12" onclick="test(this)" name="button">ccc</button>
- <script type="text/javascript">
- function test(which){
- //which這個參數不要寫成this
- alert($(which).attr("id"));
- }
- </script>
- </body>
於是最上面那個可以用onclick事件來傳入到函數中,並用juqury來進行操作,如下實踐Ok:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-cn">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
- <script>!window.jQuery && document.write('<script src="js/jquery-1.4.2.min.js"><\/script>')
- </script>
- </head>
- <body>
- <select name="btn" id="btn" onclick=thisTestJquery(this)>
- <option value="1">日志標題</option>
- <option value="2">日志全文</option>
- <option value="3">評論引用</option>
- <option value="4">所有留言</option>
- <option value="5">頁面搜索</option>
- </select>
- <script type="text/javascript">
- function thisTestJquery(th) {
- //th 這個參數不要寫成this
- alert($(th).html());
- alert($(th).val());
- //兩種獲取ID的方法
- console.log(th.id);
- console.log($(th).attr("id"));
- }
- </script>
- </body>
點擊后,結果如下:
- alert($(th).html());
結果:
<option value="1">日志標題</option>
<option value="2">日志全文</option>
<option value="3">評論引用</option>
<option value="4">所有留言</option>
<option value="5">頁面搜索</option>
- alert($(th).val());
結果:1
而兩種this獲取Id值是這樣的,實踐也OK,如下:
- console.log(th.id);
- console.log($(th).attr("id"));
對於多個id的按鈕下進行click時,查找是哪個id值被點了,如下,但是有發ajax后,就不能在ajax里去寫this了,那就是ajax那個this了,只能傳入,如下所示:
- $("#exeall,#exe32,#exe64").click(function(){
- para.type = this.id.substr(3);//這樣取是Ok的:this.id
- console.log($(this).id);//不能取到想要的Id
- console.log(this.id);//日志打印出來Ok
- var selfObj = this;//這樣做才能傳入到get里去。
- $.get("/php/cgi/execGray.php",para,function(data){
- self.done = false;
- var obj = eval('('+data+')');
- if(obj.code == -2)
- {
- console.log(selfObj.id);
- }
- }
- })
通過this傳入變量:
在<a 中實現Js函數的this調用:
- <a href="javascript:void(0);" onclick="modifyRequest(this)" data=\''+JSON.encode(requestObj)+'\'>' + requestObj.f_RequestCode + '</a>
- 函數原型:
- function modifyRequest(obj){
- var requestData = eval('('+$(obj).attr('data')+')');
- ......
- }
