我從jQuery的1.3.2升級到1.6.4,並發現了一些東西,在現有的代碼不工作 -.attr()相關的東西在jquery升級1.3.2之後停止工作到1.6.4,還有什麼可以打破的?
禁用的東西 -
$(selector).attr("disabled","");
察看單選按鈕是否檢查 -
if($(selector).attr('checked'))
我檢查了版本發行版1.4,1.5和1.6的向後不兼容性,發現只提到了問題#2,但未提及上述問題#1。所以我擔心,像問題#1,我可以找到更多的問題與我現有的代碼。我想我錯過了http://blog.jquery.com/2011/05/03/jquery-16-released/的「數據屬性的案例映射」部分。請有人解釋一下。
來源 - Upgrading from jQuery 1.3.2 to jQuery 1.5 (or 1.4)
更新
我還與適當與prop
更換attr
有點困惑。我已閱讀.prop() vs .attr()和其他一些問題。我到目前爲止所閱讀的任何地方,在大多數情況下,我都需要這樣做。但是哪些是少數情況呢?有人可以提供一些代碼示例或情況嗎?我如何在現有的代碼中找到這種情況?它提到我也看過https://stackoverflow.com/a/6057122/351903說 -
你真的需要小心的就是不整個應用程序
待辦事項混合相同屬性 使用的這些事情我現在需要將attr
替換爲prop
,以防這些線路工作正常嗎?
$(selector).attr("id")
更新#2
假設在我現有的代碼,我有一個像下面幾行(我猜直接影響到UI控件的行爲或狀態),但目前還沒有檢查,看是否該元素被選中與否 -
這是有
$(selector).attr("checked","checked"); //setting
但是,這是不是有
if($(selector).attr("checked")) //checking
即使現在設置正在工作,我還應該在設置代碼中將attr
更換爲prop
嗎?
更新#3
有沒有從那裏我能得到某種屬性的列表,它直接影響到UI控件的某些屬性的一些地方?我仍然困惑於決定用什麼屬性來替換屬性。是否有其他人對這個jQuery版本感到相同,或者我只有一個:D?
更新#4
看起來,在這兩個版本之間的某處(1.3.2至1.6.4),jQuery的製作元素的選擇更加嚴格。
詳細
在模塊中,有以下HTML -
<div id="60table">
<div>
<input type="CHECKBOX" id="60_1" value="1" name="data[reportsInfo][Campaign][2752]">
<label for="60_1">23 apr new campaign 1</label>
</div>
<div>
<input type="CHECKBOX" id="60_2" value="1" name="data[reportsInfo][Campaign][2753]">
<label for="60_2">23 apr new campaign 2</label>
</div>
<div>
<input type="CHECKBOX" id="60_3" value="1" name="data[reportsInfo][Campaign][2707]">
<label for="60_3">2nd camp added</label>
</div>
</div>
與jQuery 1.3.2,下面回到投入的實際計數 -
$("#60table INPUT[type='checkbox']").length
但是,現在與jQuery 1.6.4,上述返回0(請注意,輸入的位置像#60table> div>輸入,不直接在#60table下)。我必須做$("#60table").find("INPUT[type='checkbox']").length
才能得到正確的號碼。
由於這個原因,下面的現有代碼停止升級後的工作,雖然我更換了attr
與prop
- 在舊的代碼後,沒有更多的工作
$("#60table INPUT[type='checkbox']").attr('checked', $("#60").attr("checked")); //I replaced the attr by prop here
所以,我仍然得到新問題升級。
把賞金
因爲 -
元素選擇邏輯沒有更多的工作 -我不知道是否有可能是有些不工作更加規範。以更新4爲例,當輸入的位置是
#60table > div > input
時,選擇$("#60table INPUT[type='checkbox']")
這樣的選擇是不正確的。如果是這樣,那麼我的項目中可能存在的其他一些常見錯誤可能已經打破。更好地解釋所有替換屬性與prop -我需要更清楚地區分何時使用prop替代attr,以及更多示例。按照喬恩的答案 -
如果它直接影響到UI控件使用 道具的行爲或狀態;否則使用attr。
我在哪裏可以得到某種屬性的列表的直接影響UI部件
你應該用'.prop(「checked」,true)'替換'.attr(「checked」,「checked」)''。我不確定你的意思是「即使檢查正在工作」。 – Jon 2012-04-17 09:15:17
對不起,我的意思是說即使設置正在工作 – 2012-04-17 09:19:53