2011-08-15 130 views
0

这个data.target == this是如何工作的?这段代码做了什么? “data.target == this”

jQuery的例子

.mouseup(function(data, handler) 
     { 
      if(data.target == this) 
      { 
       // some code 
      } 
     }) 

这是否比较通过比较它们各自的属性的对象?

我需要这个检查,因为我只想在父div和一个孩子上使用mouseup。

if (data.target == this || * if this has className XXX *) { 
    // some code 
} 
+0

http://rayfd.wordpress.com/2007/03/18/really-understanding-javascripts-equality-and-identity/ –

回答

3

if (data.target == this)评估为真,如果this指的是在存储器中的相同的对象data.target

==运算符不会比较成员值。请参阅Object comparison in JavaScript

+1

(同样适用于'==='。)[这里是证明](http ://jsfiddle.net/f7g8s/)。 –

0

由于您使用的是JQuery,因此不需要担心比较。只需使用.live即可将mouseup绑定到两个感兴趣的元素。

$(myDiv).live('mouseup',myFunction()); 
$(myChildElement).live('mouseup',myFunction()); 

您需要编写代码来处理mousedown未达到目标的情况,例如,用户在其他地方点击并在释放之前将鼠标拖过目标。