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 相关文章推荐
快速保存网页中所有图片的方法
Jun 23 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 06 Javascript
js的写法基础分析
Jan 17 Javascript
div模拟选择框示例代码
Nov 03 Javascript
Jquery AJAX POST与GET之间的区别
Nov 14 Javascript
js 触发select onchange事件代码
Mar 20 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
May 05 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
Jan 09 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
Sep 05 Javascript
JS回调函数基本定义与用法实例分析
May 24 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
Jun 01 jQuery
Vue按时间段查询数据组件使用详解
Aug 21 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中创建并处理图象
2006/10/09 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
php中的路径问题与set_include_path使用介绍
2014/02/11 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
js实现计算器功能
2020/08/10 Javascript
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
对于Python装饰器使用的一些建议
2015/06/03 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
浅析python继承与多重继承
2018/09/13 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
办公室经理岗位职责
2014/01/01 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
公务员培的训心得体会
2014/09/01 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL