Javascript If语句,$(this)=$(“div”)

Javascript If语句,$(this)=$(“div”),javascript,jquery,Javascript,Jquery,嗨 我只想在焦点文本框具有特定ID时运行一点代码。 这是我的密码: $("input:text").focus(function() { if ($(this) == $("#divid")) { //action } }); 它不起作用,我不知道为什么。尝试直接通过id进行比较 if (this.id === "divid") { // do something } 这是行不通的,因为每次调用$()都会返回一个新对象

我只想在焦点文本框具有特定ID时运行一点代码。 这是我的密码:

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

它不起作用,我不知道为什么。

尝试直接通过id进行比较

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

这是行不通的,因为每次调用
$()
都会返回一个新对象

然而:

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

应该有用。或者,正如Kevin B明智地建议的那样,只需查看您的元素是否有问题的“id”。

您可以使用jQuery的
.is
进行检查

$(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
        }
    });

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

log($(this));您将看到为什么这个条件不起作用。如果您发布一个JSFIDLE会有所帮助。这可能比比较ID更好。仅仅因为两个ID相等并不意味着这两个元素将是相同的。@jbabey如果您有有效的标记,并且您正在以OP的方式查询DOM中的元素,则情况不会如此。@jbabey如果有多个ID相同的元素,则不能保证由
$(“#divid”)选择的元素
将是
,因为
$(“#divid”)
将仅正确选择具有该id的第一个元素。@KevinB是的,我同意,但在涉及不正确标记的情况下,无论如何事情都有点不正常。@Pointy是的,如果标记正确,您的解决方案肯定会有效,我只是在为你的答案辩护,而不是为jbabey的评论辩护P