2011-08-15 224 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未達到目標的情況,例如,用戶在其他地方點擊並在釋放之前將鼠標拖過目標。