使用jQuery解析字符串如何逃脫一個jQuery串
message="<div messageid=999 value=something>hello</div>";
$(message).attr('messageid');
這個偉大的工程......當郵件包含一些字符像除外:
message="!hello world!";
$(message).attr('messageid');
什麼是解決方案來解決這個問題?
使用jQuery解析字符串如何逃脫一個jQuery串
message="<div messageid=999 value=something>hello</div>";
$(message).attr('messageid');
這個偉大的工程......當郵件包含一些字符像除外:
message="!hello world!";
$(message).attr('messageid');
什麼是解決方案來解決這個問題?
當您將字符串作爲第一個參數傳遞給jQuery函數($)時,該函數會嘗試確定它是選擇器還是HTML字符串。
當你使用感嘆號或冒號,並且字符串中沒有HTML標籤時,jQuery會認爲它是一個選擇器,因爲「!」和「:」是選擇器語法的一部分。
這就是爲什麼打電話給$('!hello world!')
會引發錯誤。
您可以通過使用$.parseHTML迫使它把它當作一個HTML字符串:
$($.parseHTML(message)).attr('messageid')
注意,有不使用問題「!」和「:」如果有字符串中的標籤:
message="<div messageid=999 value=something>:No problems here!</div>"
$(message).attr('messageid')
$('hello world')
或
$($.parseHTML('!hello world!'))
上的屬性顯然會返回
undefined
。
在第二個示例中,字符串不包含html標記,也沒有mesageid屬性,但是您正試圖訪問它,爲什麼? – Wazaaaap