1. 程式人生 > >jquery中使用event.target的幾點說明 (轉自http://blog.csdn.net/zm2714/article/details/8119642)

jquery中使用event.target的幾點說明 (轉自http://blog.csdn.net/zm2714/article/details/8119642)

board ngs 使用 net spa dtd meta xhtml function

jquery中使用event.target的幾點說明

event.target

說明:引發事件的DOM元素。

this和event.target的區別

js中事件是會冒泡的,所以this是可以變化的,但event.target不會變化,它永遠是直接接受事件的目標DOM元素;

this和event.target的相同點

this和event.target都是dom對象,如果要使用jquey中的方法可以將他們轉換為jquery對象:$(this)和$(event.target);

這使我想起了以前寫的一個例子:

  1. //del event
  2. $(".del").bind("click",function(event){
  3. var _tmpQuery=$(this);//為什麽要加上這一句?
  4. var id=$("input[name=‘id‘]",$(this).parents("form:first")).attr("value");
  5. art.dialog.confirm(‘你確認刪除該日誌嗎?‘,function(){
  6. $.post("myRun/managerlog_del.php",{id:id},function(tips){
  7. if(tips==‘ok‘){
  8. art.dialog.tips(‘成功刪除‘);
  9. $(_tmpQuery.parents(‘tr:first‘)).hide();//如果不加第一句,這裏用$($(this).parents(‘tr:first‘)).hide();則不會隱藏
  10. //因為這裏的this,並不是當前的class="del"這個DOM對象了。而是jQuery的AJAX配置對象ajaxSettings。測試:alert(this.url);
  11. }else{
  12. art.dialog.tips(tips,5);
  13. }
  14. });
  15. return true;
  16. });
  17. });
那麽現在我可以將上面代碼通過$(event.target)這個方式來實現隱藏tr,而不用通過$(_tmpQuery.parents(‘tr:first‘)).hide();這樣的方式,具體代碼如下:

[javascript] view plain copy
  1. $(".del").bind("click",function(event){
  2. //var _tmpQuery=$(this);這行代碼可以刪除
  3. var id=$("input[name=‘id‘]",$(this).parents("form:first")).attr("value");
  4. art.dialog.confirm(‘你確認刪除該日誌嗎?‘,function(){
  5. $.post("myRun/managerlog_del.php",{id:id},function(tips){
  6. if(tips==‘ok‘){
  7. art.dialog.tips(‘成功刪除‘);
  8. $(event.target).parents(‘tr:first‘).hide();
  9. }else{
  10. art.dialog.tips(tips,5);
  11. }
  12. });
  13. return true;
  14. });
  15. });

event.target和$(event.target)的使用

[html] view plain copy
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>無標題文檔</title>
  6. <script language="JavaScript" type="text/JavaScript" src="http://www.w3school.com.cn/jquery/jquery.js"></script>
  7. <script type="text/javascript">
  8. $(function(){
  9. $("li").live("click",function(event){
  10. $("#temp").html("clicked: " + event.target.nodeName);
  11. $(event.target).css("color","#FF3300");
  12. })
  13. });
  14. </script>
  15. </head>
  16. <body>
  17. <div id="temp"></div>
  18. <ul class="JQ-content-box" style="padding:20px; background:#FFFFFF">
  19. <li>第一行
  20. <ul>
  21. <li>這是公告標題1</li>
  22. <li>這是公告標題2</li>
  23. <li>這是公告標題3</li>
  24. <li>這是公告標題4</li>
  25. </ul>
  26. </li>
  27. </ul>
  28. </body>
  29. </html>
上面的例子如果改成使用this

[javascript] view plain copy
  1. <script type="text/javascript">
  2. $(function(){
  3. $("li").live("click",function(event){
  4. $("#temp").html("clicked: " + event.target.nodeName);
  5. $(this).css("color","#FF3300");
  6. event.stopPropagation();
  7. })
  8. });
  9. </script>

在看一個例子

[html] view plain copy
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script language="JavaScript" type="text/JavaScript" src="http://www.w3school.com.cn/jquery/jquery.js"></script>
  5. <script>
  6. $(document).ready(function(){
  7. function handler(event) {
  8. var $target = $(event.target);
  9. if( $target.is("li") ) {
  10. $target.children().toggle();
  11. }
  12. }
  13. $("ul").click(handler).find("ul").hide();//從這裏也看出find只在後代中遍歷,不包括自己。
  14. });
  15. </script>
  16. </head>
  17. <body>
  18. <ul>
  19. <li>item 1
  20. <ul>
  21. <li>sub item 1-a</li>
  22. <li>sub item 1-b</li>
  23. </ul>
  24. </li>
  25. <li>item 2
  26. <ul>
  27. <li>sub item 2-a</li>
  28. <li>sub item 2-b</li>
  29. </ul>
  30. </li>
  31. </ul>
  32. </body>
  33. </html>

jquery中使用event.target的幾點說明 (轉自http://blog.csdn.net/zm2714/article/details/8119642)