2012-08-13 54 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')){ 
}