2010-02-25 44 views
4

工作,這是我的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。爲什麼?

此代碼的目的:它應該在登錄表單中顯示用戶友好的文本,以便用戶知道填寫用戶名和密碼輸入字段的內容。這很重要,因爲輸入字段沒有標籤(我知道......但客戶端不需要標籤)。如果($('#selector')。length == 0)條件存在,因爲如果用戶在瀏覽器中保存他/她的用戶名和密碼,瀏覽器將自動填充保存的值,所以它會使確定背景圖像不會與它們重疊。

回答

8

您應該使用:的

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

代替

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

$('#selector').length只會告訴你的元素數量相匹配,所選元素的值不是長度。看到這裏:http://api.jquery.com/length/

+1

的確,.length返回選擇器匹配的元素的數量 – 2010-02-25 00:39:11

+0

瑣事:* id *選擇器的長度應該始終爲1,因爲ids是(應該是)唯一的。 – poke 2010-02-25 01:14:59

+2

@poke:如果元素不存在,則爲零。 – 2010-02-25 03:50:53