2012-08-13 51 views
2

Hya星,

我想運行一些代碼只有在焦點的文本框具有一定的ID。 這裏是我的代碼:

$("input:text").focus(function() { 
     if ($(this) == $("#divid")) { 
       //action 
     } 
}); 

它不工作,我不知道爲什麼。

+0

console.log($(this));你會明白爲什麼這個條件不起作用。 – 2012-08-13 20:05:46

+1

如果你發佈了jsfiddle,它會有所幫助。 – 2012-08-13 20:05:49

回答

7

嘗試通過id直接比較。

if (this.id === "divid") { 
    // do something 
} 
+0

謝謝,解決了它。將選擇你的答案。 – 2012-08-13 20:09:52

6

這將永遠不會工作,因爲每次調用$()都會返回一個新對象。

但是:

this == $('#divid')[0] 

應該工作。或者,正如Kevin B明智地表明的那樣,只要看看你的元素是否有問題的「id」。

+0

這可能比比較ID更好。僅僅因爲兩個ID是平等的並不意味着這兩個元素將是相同的。 – jbabey 2012-08-13 20:07:29

+1

@ jbabey它應該是這個意思。 – Fresheyeball 2012-08-13 20:08:44

+0

@jbabey如果你有有效的標記,並且你正在查詢DOM中存在的元素,那麼OP就不會這樣。 – 2012-08-13 20:09:32

1
$(function(){ // insure your code is runing after document is ready 

    $("input[type='text']").focus(function() { //css selector 
     if ($(this).is("#divid")) { // use .is to check the jquery way 
      //action 
     } 
    }); 

}); 
4

您可以使用jQuery的.is檢查。

if($(this).is('#divid')){ 
}