JQuery中html()方法使用不當帶來的陷阱
更新時間:2011年04月07日 21:49:57 作者:
html方法當不傳參數(shù)時用來獲取元素的html內容
查看源碼
return this[0] && this[0].nodeType === 1 ?
this[0].innerHTML.replace(rinlinejQuery, "") :
null;
得知其通過非標準的但所有瀏覽器都支持的innerHTML實現(xiàn)。
有些使用者會用html()方法的返回值作為代碼分支的條件,比如:
var str = $('#user').html();
if( str=='jack' ){
...
}else if( str=='tom' ){
...
}else if( str=='lily' ){
...
}
多數(shù)情況下這沒什么問題,但如果id=user的html元素內有空格,則不會得到想要的結果了。比如:
<div id="user"> jack</div>
<script>
alert(document.getElementById('user').innerHTML.length);
</script>
div[id=user]內文本jack前不小心多了3個空格,這時候在各瀏覽器表現(xiàn)不一樣:
IE6/78中,彈出字符串的長度是4,即忽略了空格。
IE9/Firefox/Safari/Chrome/Opera中,彈出則是7,即沒有忽略空格。
這時候拿.html()的返回值作為代碼分支的條件明顯在非IE瀏覽器中會出錯。
如果非要使用元素的html內容作為判斷條件,解決辦法很簡單
1,寫html時去掉空格
2,調用html()方法后再調用trim,如var str = $('#user').html().trim();
復制代碼 代碼如下:
return this[0] && this[0].nodeType === 1 ?
this[0].innerHTML.replace(rinlinejQuery, "") :
null;
得知其通過非標準的但所有瀏覽器都支持的innerHTML實現(xiàn)。
有些使用者會用html()方法的返回值作為代碼分支的條件,比如:
復制代碼 代碼如下:
var str = $('#user').html();
if( str=='jack' ){
...
}else if( str=='tom' ){
...
}else if( str=='lily' ){
...
}
多數(shù)情況下這沒什么問題,但如果id=user的html元素內有空格,則不會得到想要的結果了。比如:
復制代碼 代碼如下:
<div id="user"> jack</div>
<script>
alert(document.getElementById('user').innerHTML.length);
</script>
div[id=user]內文本jack前不小心多了3個空格,這時候在各瀏覽器表現(xiàn)不一樣:
IE6/78中,彈出字符串的長度是4,即忽略了空格。
IE9/Firefox/Safari/Chrome/Opera中,彈出則是7,即沒有忽略空格。
這時候拿.html()的返回值作為代碼分支的條件明顯在非IE瀏覽器中會出錯。
如果非要使用元素的html內容作為判斷條件,解決辦法很簡單
1,寫html時去掉空格
2,調用html()方法后再調用trim,如var str = $('#user').html().trim();
相關:
http://www.w3.org/TR/2008/WD-html5-20080610/dom.html#innerhtml0
僅IE6/7/8中innerHTML返回值忽略英文空格的問題
相關文章
圣誕節(jié)Merry Christmas給博客添加浪漫的下雪效果基于jquery實現(xiàn)
一年一度的圣誕節(jié)又到了,首先祝大家好運一串串,健康一年年,平安到永遠!今天就教大家如何在博客中添加紛紛揚揚的下雪效果。今天,你那里下雪了嗎2012-12-12IE7瀏覽器窗口大小改變事件執(zhí)行多次bug及IE6/IE7/IE8下resize問題
通過本篇文章主要給大家介紹IE7瀏覽器窗口大小改變事件執(zhí)行多次bug及IE6/IE7/IE8下resize問題,需要的朋友可以一起來學習2015-08-08ie8模式下click無反應點擊option無反應的解決方法
點擊select里面的option,將其賦值到上面的input,直接用jQuery寫的,問題是在用IE8打開的時候,點擊option沒有任何反應2014-10-10jQuery插件FusionCharts繪制2D環(huán)餅圖效果示例【附demo源碼】
這篇文章主要介紹了jQuery插件FusionCharts繪制2D環(huán)餅圖效果,結合實例形式分析了jQuery使用插件FusionCharts載入xml數(shù)據(jù)繪制2D環(huán)餅圖的相關步驟與操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-04-04jQuery UI工具提示框部件Tooltip Widget
這篇文章介紹了jQuery UI工具提示框部件Tooltip Widget,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06jQuery擴展方法實現(xiàn)Form表單與Json互相轉換的實例代碼
本文通過實例代碼給大家介紹了jQuery擴展方法實現(xiàn)Form表單與Json互相轉換的相關知識,并給大家介紹了jquery兩種擴展方法,需要的朋友可以參考下2018-09-09