2012-11-26 17 views
0

這段代碼的作用是從jquery#faq pagejQuery的 - 沒有「removeAttr」

<select id="x" style="width:200px;"> 
    <option>one</option> 
    <option>two</option> 
</select> 
<input type="button" value="Disable" onclick="$('#x').attr('disabled','disabled')"/> 
<input type="button" value="Enable" onclick="$('#x').removeAttr('disabled')"/> 

直接複製粘貼的select選項列表是越來越首先點擊禁用disable,但沒有得到上單擊再次啓用Enable按鈕。

請讓我知道,上面這段代碼有什麼問題?

我在Windows上使用Chrome 23.0.1271.64。

+4

[這對我的作品(http://jsfiddle.net/Sd7GC/) (Chromium/linux) –

+0

它在這裏工作嗎? http://jsfiddle.net/Anrse/它適用於Windows上的Chrome。 (最後的版本)。 –

+0

@student是。 jsFiddle正在工作。我猜jQuery常見問題頁面上有一些錯誤。你可以嘗試在帖子中的上述faw鏈接嗎?那樣有用嗎? – mtk

回答

1

你是正確的約是有官方jQuery頁面上的一個錯誤。查看該頁面的源顯示,這是實際的代碼:

<select id="x" style="width:200px;" disabled="disabled"> 
    <option>one</option> 
    <option>two</option> 
</select> 
<input type="button" onclick="$('#x').attr('disabled','disabled')" value="Disable"> 
<input type="button" onclick="$('#x').attr('disabled','')" value="Enable"> 

正如你所看到的,onclick代碼不正確;要啓用一個控件(根據jQuery FAQ),disabled屬性應該設置爲false或者使用$(..).removeAttr()刪除。

3

在jQuery 1.7,用代替.prop:

$('#x').prop('disabled', true); 
$('#x').prop('disabled', false); 

雖然,正如其他人所說,似乎它似乎正常工作:

http://jsfiddle.net/K5MRf/

+1

它適用於我使用jQuery 1.8 0.2 –

+2

你應該真的使用'$('#x')。prop('disabled',true);'和'$('#x')。prop('disabled',false);' –

1

問題是jQuery的頁面

他們說,使用$('#x').attr('disabled')但如果你看到運行的實際代碼,它是$('#x').attr('disabled','')

這臺disabled屬性爲空字符串。但是這意味着該屬性保持不變,並且該屬性的正確用法是如果該屬性完全存在,則該元素被視爲禁用。

正確的方式做到這一點是使用.prop和@Kurt表明直接使用true/false值與它..