[英]Using jQuery to test if string contains HTML markup
我想測試一個字符串中是否包含html標記。
html = "<p class=\"c\">some <span>conten<b class=\"i\">t</b></span><p><p>more content</p><p><i>important</i>";
我認為使用find()
或has()
可以幫助我做到這一點,但是它不起作用。
$(html).find("p") //[]
$(html).has("p") //[]
如果我做實驗,結果會令人困惑。
$(html).has("p") //[]
$(html).has("*") //array of <p> elements and children
$(html).has("*") == true //false
$(html).has("*").length == true //false ??
為什么我不能使用這些方法中的任何一種來查看我的字符串是否包含HTML標記?
謝謝
.has()和.find()都在給定元素的子節點上運行。 要測試元素本身,請使用.is() :
$(html).is('p'); // true
$(html).is('div'); // false
$(html).is('*'); // true
...盡管我對后者的有效性持懷疑態度,因為它沒有專門針對HTML元素進行測試。 所以這...
var someMarkup = '<foo"bar"zzz>';
$(someMarkup).is('*');
...也是true
。 如果你省略了最后>
在這個表達式,你甚至不會達到is
:
var noHtmlJustLt = '<';
$(noHtmlJustLt).is('*'); // Error: Syntax error, unrecognized expression: <
...因此您必須將其包裝到try-catch
塊中。
老實說,我可能會用另一種方法解決整個任務(檢查字符串是否有惡意標記):使用常見的技巧來逃避原始文本...
var newHtml = $('<div></div>').html(html).text();
...然后將其與原始html
內容進行比較。 如果沒有標記符號,則它們應該相等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.