jquery 关于event.target使用的几点说明介绍


Posted in Javascript onApril 26, 2013

event.target
说明:引发事件的DOM元素。

this和event.target的区别
js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素;

this和event.target的相同点
this和event.target都是dom对象,如果要使用jquey中的方法可以将他们转换为jquery对象:$(this)和$(event.target);

这使我想起了以前写的一个例子:

    //del event
    $(".del").bind("click",function(event){
        var _tmpQuery=$(this);//为什么要加上这一句?
        var id=$("input[name='id']",$(this).parents("form:first")).attr("value");
        art.dialog.confirm('你确认删除该日志吗?',function(){
            $.post("myRun/managerlog_del.php",{id:id},function(tips){
                if(tips=='ok'){
                    art.dialog.tips('成功删除');
                    $(_tmpQuery.parents('tr:first')).hide();//如果不加第一句,这里用$($(this).parents('tr:first')).hide();则不会隐藏
                    //因为这里的this,并不是当前的class="del"这个DOM对象了。而是jQuery的AJAX配置对象ajaxSettings。测试:alert(this.url);
                }else{
                    art.dialog.tips(tips,5);
                }
            });
            return true;
        });
    });

那么现在我可以将上面代码通过$(event.target)这个方式来实现隐藏tr,而不用通过$(_tmpQuery.parents('tr:first')).hide();这样的方式,具体代码如下:
$(".del").bind("click",function(event){
    //var _tmpQuery=$(this);这行代码可以删除
    var id=$("input[name='id']",$(this).parents("form:first")).attr("value");
    art.dialog.confirm('你确认删除该日志吗?',function(){
        $.post("myRun/managerlog_del.php",{id:id},function(tips){
            if(tips=='ok'){
                art.dialog.tips('成功删除');
                $(event.target).parents('tr:first').hide();
            }else{
                art.dialog.tips(tips,5);
            }
        });
        return true;
    });
});

event.target和$(event.target)的使用
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script language="JavaScript" type="text/JavaScript" src="http://www.w3school.com.cn/jquery/jquery.js"></script>
<script type="text/javascript">
$(function(){
    $("li").live("click",function(event){
        $("#temp").html("clicked: " + event.target.nodeName);
        $(event.target).css("color","#FF3300");
    })
});
</script>
</head>

<body>
    <div id="temp"></div>
    <ul class="JQ-content-box" style="padding:20px; background:#FFFFFF">
        <li>第一行
            <ul>
                <li>这是公告标题1</li>
                <li>这是公告标题2</li>
                <li>这是公告标题3</li>
                <li>这是公告标题4</li>
            </ul>
        </li>
    </ul>
</body>
</html>

上面的例子如果改成使用this
<script type="text/javascript">
$(function(){
    $("li").live("click",function(event){
        $("#temp").html("clicked: " + event.target.nodeName);
        $(this).css("color","#FF3300");
        event.stopPropagation();
    })
});
</script>

在看一个例子
<!DOCTYPE html>
<html>
<head>
<script language="JavaScript" type="text/JavaScript" src="http://www.w3school.com.cn/jquery/jquery.js"></script>
<script>
$(document).ready(function(){
    function handler(event) {
      var $target = $(event.target);
      if( $target.is("li") ) {
        $target.children().toggle();
      }
    }
    $("ul").click(handler).find("ul").hide();//从这里也看出find只在后代中遍历,不包括自己。
});
</script>
</head>
<body>
<ul>
  <li>item 1
    <ul>
      <li>sub item 1-a</li>
      <li>sub item 1-b</li>
    </ul>
  </li>
  <li>item 2
    <ul>
      <li>sub item 2-a</li>
      <li>sub item 2-b</li>
    </ul>
  </li>
</ul>
</body>
</html>

toggle()不带参数的作用:

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

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

Javascript 相关文章推荐
Javascript UrlDecode函数代码
Jan 09 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
Mar 28 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
Sep 19 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
Jun 05 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
Jan 26 Javascript
js实现图片加载淡入淡出效果
Apr 07 Javascript
利用angular、react和vue实现相同的面试题组件
Feb 19 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 Javascript
vue相同路由跳转强制刷新该路由组件操作
Aug 05 Javascript
Vue select 绑定动态变量的实例讲解
Oct 22 Javascript
基于Vue+Webpack拆分路由文件实现管理
Nov 16 Javascript
详解JavaScript执行模型
Nov 16 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
Apr 26 #Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
Apr 26 #Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
Apr 26 #Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 #Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
Apr 26 #Javascript
关于jquery.validate1.9.0前台验证的使用介绍
Apr 26 #Javascript
jQuery.Validate验证库的使用介绍
Apr 26 #Javascript
You might like
PHP 图片上传代码
2011/09/13 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
javascript 鼠标滚轮事件
2009/04/09 Javascript
Extjs 几个方法的讨论
2010/01/28 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
vue中本地静态图片路径写法
2018/03/06 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
Python实现模拟登录及表单提交的方法
2015/07/25 Python
python 判断网络连通的实现方法
2018/04/22 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
Python实现区域填充的示例代码
2021/02/03 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
英国男女奢华内衣和泳装购物网站:Figleaves
2017/01/28 全球购物
房地产员工找工作的自我评价
2013/11/15 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
银行服务感言
2014/03/01 职场文书
大型公益活动策划方案
2014/08/20 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
男方婚礼答谢词
2015/01/20 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
《黄山奇石》教学反思
2016/02/18 职场文书
工作一年自我鉴定
2019/06/20 职场文书