zoukankan      html  css  js  c++  java
  • 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();这样的方式,具体代码如下:

     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)的使用

     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 
    17 
    18 <body>
    19     <div id="temp"></div>
    20     <ul class="JQ-content-box" style="padding:20px; background:#FFFFFF">
    21         <li>第一行
    22             <ul>
    23                 <li>这是公告标题1</li>
    24                 <li>这是公告标题2</li>
    25                 <li>这是公告标题3</li>
    26                 <li>这是公告标题4</li>
    27             </ul>
    28         </li>
    29     </ul>
    30 </body>
    31 </html>
    View Code

    上面的例子如果改成使用this 

    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>

    在看一个例子

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

    toggle()不带参数的作用:

    toggle有两种作用:
    toggle()
    切换元素的可见状态。
    如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的。

    toggle(fn,fn)
    每次点击时切换要调用的函数。
    如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数。随后的每次点击都重复对这两个函数的轮番调用。
    可以使用unbind("click")来删除。

  • 相关阅读:
    深入了解Go Playground
    计算机程序设计艺术学习笔记1
    Docker 和一个正常的虚拟机有何区别?
    现代计算机架构常见时延(摘自计算机系统结构--量化研究方法)
    内核开发时应该注意的点
    gem5线程相关的类—SimpleThread类,ThreadState类(src/cpu/thread_state.*)
    GEM5中模拟的系统调用(部分没实现)
    字典树(trie)
    UML类图几种关系的总结
    C,C++宏中#与##的讲解
  • 原文地址:https://www.cnblogs.com/zyh-club/p/4756896.html
Copyright © 2011-2022 走看看