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 相关文章推荐
js数组的基本用法及数组根据下标(数值或字符)移除元素
Oct 20 Javascript
IE8下String的Trim()方法失效的解决方法
Nov 08 Javascript
父节点获取子节点的字符串示例代码
Feb 26 Javascript
node.js中的fs.readlinkSync方法使用说明
Dec 17 Javascript
jQuery中:visible选择器用法实例
Dec 30 Javascript
修改或扩展jQuery原生方法的代码实例
Jan 13 Javascript
JQuery实现动态添加删除评论的方法
May 18 Javascript
javascript实现tab响应式切换特效
Jan 29 Javascript
jquery取消事件冒泡的三种方法(推荐)
May 28 Javascript
js获取一组日期中最近连续的天数
May 25 Javascript
微信小程序switch组件使用详解
Jan 31 Javascript
js实现控制文件拖拽并获取拖拽内容功能
Feb 17 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 ZipArchive压缩函数详解实例
2013/11/06 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
php微信开发之关注事件
2018/06/14 PHP
jQuery 方法大全方便学习参考
2010/02/25 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
js创建数组的简单方法
2016/07/27 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
jquery实现简单拖拽效果
2020/07/20 jQuery
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
python命令行工具Click快速掌握
2019/07/04 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
Python中bisect的使用方法
2019/12/31 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
九州传奇上机题
2014/07/10 面试题
会计专业毕业生自我评价
2013/09/25 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
关于学习的演讲稿
2014/05/10 职场文书
小学教师教学随笔
2015/08/14 职场文书
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android