2011-07-21 28 views
3

可能重複:
.prop() vs .attr()的jQuery 1.6.2問題使用.prop()託運和殘疾人

請看看這個小提琴:

http://jsfiddle.net/DGzvP/

$("#test").prop({ 
    checked: true, 
    disabled: true 
}); 

$("#result").text($("#container").html()); 

您將看到輸出是:

<input disabled="disabled" id="test" type="checkbox"> 

這是FF 5.爲什麼它添加屬性爲殘疾人而不是檢查?我希望它能以一致的方式進行。

編輯:

我意識到,現在的結果是在每個瀏覽器完全不同。

更多結果:

IE6/7:

<INPUT id=test disabled type=checkbox CHECKED> 

鉻13:

<input id="test" type="checkbox" disabled=""> 

IE8:

<INPUT id=test disabled type=checkbox> 

回答

3

的 「.prop()」 方法是所有關於設置/獲取屬性在DOM節點上,而不是關於設置屬性。因此,它不會添加任何屬性。你所看到的是Firefox 5「innerHTML」代碼的行爲,而不是jQuery的行爲。

如果您想使用HTML或XHTML的屬性(或任何DOM來自哪個屬性),請使用「.attr()」。但是,對於JavaScript中使用活動DOM的大多數目的,您應該使用「.prop()」。

+0

注意,在1.8.3至少,使用'道具()''爲將disabled'確實禁用缺少了'disabled'屬性的輸入,甚至會報告說,當你檢查它的禁用'attr'! –

0

您應該在此處使用attr而不是prop

$("#test").attr({ 
    checked: true, 
    disabled: true 
}); 
+0

他特別說了1.6.2,它使用.prop()函數來修改屬性。 @see [.prop()](http://api.jquery.com/prop/) – Andrew

+0

@Andrew:是的,*這裏*在我的答案意思是*得到你所期望的*,即''。 –

+0

@Andrew:他說:「爲什麼它添加了禁用的屬性,而不是檢查?」,所以OP沒有清楚地記住屬性和屬性之間的差異。我只是猜測他想獲得什麼。 –