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编程起步(第六课)
Jan 10 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
May 19 Javascript
javascript 使td内容不换行不撑开
Nov 29 Javascript
jQuery实现当前页面标签高亮显示的方法
Mar 10 Javascript
AngularJS下对数组的对比分析
Aug 24 Javascript
基于JQuery及AJAX实现名人名言随机生成器
Feb 10 Javascript
在Angular中使用JWT认证方法示例
Sep 10 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
Apr 02 Javascript
create-react-app中添加less支持的实现
Nov 15 Javascript
vue路由缓存的几种实现方式小结
Feb 02 Javascript
vue中的计算属性和侦听属性
Nov 06 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
用示例说明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图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
2017/02/06 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
js 遍历对象的属性的代码
2011/12/29 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
分析python服务器拒绝服务攻击代码
2014/01/16 Python
python常见数制转换实例分析
2015/05/09 Python
使用Scrapy爬取动态数据
2018/10/21 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
土木工程毕业生自荐信
2013/11/12 职场文书
医学类个人求职信范文
2014/02/05 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
python实现简单的井字棋
2021/05/26 Python
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python