JQuery中this和event.target的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JQuery中this和event.target的区别相关的知识,希望对你有一定的参考价值。

关于JQuery中this和event.target的区别如下:

1、js中的事件会冒泡,因此可以更改,

但是event.target不会更改,它始终指向触发事件本身的DOM元素;

2、假设htm是<div> <span> </ span> </ div>,单击span时,更改span的颜色。

如果使用this按钮单击span,则由于事件起泡机制,div将更改颜色。

但是使用event.target就不会。

扩展资料:

关于JQuery中this的用法举例

例1:

$("#btnConfirm").click(function()alert($(this).val()); // ,在这里,this指的是这个ID为btnConfirm的选项,因为你现在点击的是ID为btnConfirm的选项,因此this就是它)

例2:

$("ul li").each(function()alert( $(this).text()); // ,这里的this指的是迭代的每个li元素,因为每次迭代,得到的都是一个<li>元素,因此这个时候this 就代表着这个当前的<li>元素

参考技术A this和event.target的区别:
1.js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远指向触发事件的DOM元素本身;
2.this和event.target都是dom对象,使用jQuey中的方法可以将他们转换为jquery对象:$(this)和$(event.target).
假设htm是<div><span></span></div>
点击span的时候改变span的颜色,使用this的话点击span因为事件冒泡机制,div也会改变颜色,但是使用event.target不会。
参考技术B

    this是javascript语言的一个关键字。 

    this代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。

    this和event.target的区别:

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

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

参考技术C event.target:触发当前事件的源对象 如: var a = document.getElementById('test'); a.addEventListener('click', function(event) //这里面event.target就是a对象 , false); srcElement是IE下的属性 target是Firefox下的属性 Chrome浏览器同时有这两个属性
this:Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用本回答被提问者采纳
参考技术D 这个怎么说呢,关于this,你可以理解为就是操作的这个东西,它指向正在操作的东西,正在操作的东西变了,this就变了~
而event.target是一个值,你不去给它重新赋值,它就不会变~

jquery 点击tr选中checkbox,解决checkbox的默认点击事件被阻止的问题

   

1.第一种,!$(event.target).is(‘input‘),判断触发事件的元素是否为input。此时使用event.target,而不是this,获取事件本身,防止触发事件冒泡的问题。

 
$("#data_table tr").on("click",function (event) {
                     if (!$(event.target).is(‘input‘))
                     {
                         $(‘input:checkbox‘, this).prop(‘checked‘, function (i,  value) {
                             return !value;
                         });
                     }
                 })

 

注释:event.target属性的作用是获取到出发事件的元素。网上说使用event.target,在ie下可能会出现版本不兼容问题,我在ie11下进行测试,发现是可以的。所以应该是, jQuery对其封装后,避免了W3C、IE和safari浏览器不同标准的差异。若出现不兼容问题,可尝试使用如下方式。
 
  var thisEvent = window.event || event;
  var targetEvent = thisEvent.srcElement;
  if (!targetEvent) {
        targetEvent = thisEvent.target;
  }

 

2.第二种,跳过checkbox所在列。本次示例是位于第一列,因此给除第一个td之外的td绑定点击选中事件。

 
  //直接使用not("td:first-child"),或者设置第一列td类为.tdcolFirst,即.not(".tdcolFirst")。效果是一致的
  
$(".tr_check td").not("td:first-child").bind("click", function () {
                     $(this).parent().find("input:checkbox").prop(‘checked‘, function  (i, value) {
                         return !value;
                     });
                 })  

3.event下的部分常用属性或方法:

方法/属性
类型
作用
 event.preventDefault()   
    
方法
阻止默认的事件行为。
 event.stopPropagation()
方法
阻止事件的冒泡。
event.type
属性
返回当前触发事件的事件类型。
 event.target
属性
获取执行事件【出发事件】的元素。
event.relatedTarget
属性
返回当触发时,该事件所涉及到的其他dom元素。
event.pageX/event.pageY
属性
获取光标相对页面的x坐标和y坐标。
event.which
属性
鼠标单击事件中,获取鼠标的左、中、右键,在键盘事件中获取键盘所在按钮。1 鼠标左键 2 鼠标中键 3 鼠标右键
event.originalEvent
属性
指向原始的事件对象。
 
 
 

以上是关于JQuery中this和event.target的区别的主要内容,如果未能解决你的问题,请参考以下文章

$(this)和event.target之间的区别?

angularJs 模拟jQuery中的this

dom对象中的this和event.target区别

jQuery事件

jquery 点击tr选中checkbox,解决checkbox的默认点击事件被阻止的问题

jquery 事件