Javascript 如果($(';#选择器';).length==0)不';我不能在IE7和IE8中工作

Javascript 如果($(';#选择器';).length==0)不';我不能在IE7和IE8中工作,javascript,jquery,Javascript,Jquery,以下是我的jquery代码: $(document).ready(function() { if ($('#login').length == 0) { $('#login').css('background', "url('/css/login-bg.gif') 2px center no-repeat"); } if ($('#password').length == 0) { $('#password').css('backgrou

以下是我的jquery代码:

$(document).ready(function() {

    if ($('#login').length == 0) {
        $('#login').css('background', "url('/css/login-bg.gif') 2px center no-repeat");
    }
    if ($('#password').length == 0) {
        $('#password').css('background', "url('/css/password-bg.gif') 2px center no-repeat");
    }

    $('#login').focus(function() {
        $(this).css('background', 'transparent'); 
    });

    $('#password').focus(function() {
        $(this).css('background', 'transparent'); 
    });

});
它可以在Firefox中使用,但不能在IE7或IE8中使用。为什么?

此代码的用途:它应该在登录表单中显示一个用户友好的文本,以便用户知道如何填写用户名和密码输入字段。这一点很重要,因为输入字段没有标签(我知道……但客户机只是不希望有标签)

存在if($(“#选择器”).length==0)条件,因为如果用户在浏览器中保存其用户名和密码,浏览器将自动填充保存的值,因此它确保背景图像不会与它们重叠。

您应该使用:

if($('#selector').val() == '')
而不是

if ($('#selector').length == 0)

$(“#选择器”)。长度
只会告诉您匹配了多少个元素,而不是所选元素值的长度。请参见此处:

确实如此,.length返回与selectorTrivia匹配的元素数:id选择器的长度应始终为一,因为id(应该)是唯一的。@poke:如果元素不存在,则返回零。