2011-09-14 57 views
1

我正在使用我在網上找到的腳本在html表單上添加輸入提示。我得到了它的所有工作,但現在的代碼是隨機生成一個風格標籤,扔掉我的CSS。該代碼應該生成如下所示的span標籤:爲什麼javascript會添加一個隨機樣式標籤?

<span id="input-prompt-0" class="input-prompt">Company Name</span> 

對於每個文本輸入字段。相反,它不斷給我這個:

<span id="input-prompt-0" class="input-prompt" style="display: block;">Company Name</span> 

任何想法爲什麼?

下面的代碼:

$(document).ready(function(){ 
    $('input[type=text][title],input[type=password][title],textarea[title]').each(function(i){ 
    $(this).addClass('input-prompt-' + i); 
    var promptSpan = $('<span class="input-prompt"/>'); 
    $(promptSpan).attr('id', 'input-prompt-' + i); 
    $(promptSpan).append($(this).attr('title')); 
    $(promptSpan).click(function(){ 
     $(this).hide(); 
     $('.' + $(this).attr('id')).focus(); 
    }); 
    if($(this).val() != ''){ 
     $(promptSpan).hide(); 
    } 
    $(this).before(promptSpan); 
    $(this).focus(function(){ 
     $('#input-prompt-' + i).hide(); 
    }); 
    $(this).blur(function(){ 
     if($(this).val() == ''){ 
     $('#input-prompt-' + i).show(); 
     } 
    }); 
    }); 
}); 

回答

4

$('#input-prompt-' + i).show();被修改樣式。來自jQuery.show的文檔:

匹配的元素將立即顯示,沒有動畫。 這大致等同於調用.css('display','block'),除了 顯示屬性被恢復到最初的任何狀態。

我想更突出的問題是爲什麼這是「扔掉[你的] CSS」?

1

這行代碼添加樣式屬性:

$('#input-prompt-' + i).show(); 

您可以改用:

$('#input-prompt-' + i).css("display", ""); 

,將顯示跨度和消除樣式屬性。

0

問題很可能與您使用.show()和.hide()相關。

這些函數改變元素的風格以發揮他們的魔力。

0

jQuery show()和hide()函數修改了樣式