我使用jquery来解析字符串
message="<div messageid=999 value=something>hello</div>";
$(message).attr('messageid');
这很有用......除非消息包含一些字符,如:!
message="!hello world!";
$(message).attr('messageid');
解决这个问题的解决方案是什么?
答案 0 :(得分:3)
当您将字符串作为第一个参数传递给jQuery函数($)时,该函数会尝试确定它是选择器还是HTML字符串。
当你使用感叹号或冒号,并且字符串中没有HTML标签时,jQuery会认为它是一个选择器,因为“!”和“:”是选择器语法的一部分。
这就是调用$('!hello world!')
会引发错误的原因。
您可以使用$.parseHTML强制它将其视为HTML字符串:
$($.parseHTML(message)).attr('messageid')
请注意使用“!”时出现 no 问题和“:”如果字符串中有标记:
message="<div messageid=999 value=something>:No problems here!</div>"
$(message).attr('messageid')
<小时/> 我的答案基于您试图避免运行时错误的假设。查询
$('hello world')
或$($.parseHTML('!hello world!'))
上的属性显然会返回undefined
。