if($('#selector')。length == 0)在IE7和IE8中不起作用

时间:2010-02-25 00:27:50

标签: 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('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($('#selector')。length == 0)条件存在,因为如果用户在浏览器中保存他/她的用户名和密码,浏览器将自动填写保存的值,因此确保背景图像不会与它们重叠。

1 个答案:

答案 0 :(得分:8)

您应该使用:

if($('#selector').val() == '')

而不是

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

$('#selector').length只会告诉您匹配了多少元素,而不是所选元素的值的长度。见这里:http://api.jquery.com/length/