2013-04-26 58 views
4

轉義我有這個div與可能包含轉義的HTML值jQuery的 - 用轉義的HTML標記屬性被自動

<div id="test" data-title="&lt;script&gt;alert(&quot;Hello&quot;);&lt;/script&gt;"></div> 

現在,當我讀到的數據屬性的值,它會自動被轉義的數據屬性。例如,以下代碼將導致警報顯示。

$(document).ready(function(){ 
    $("#test").append($("#test").data("title")); 
    }); 

見的jsfiddle http://jsfiddle.net/FJTW8/3/

爲什麼越來越轉義,以及有什麼解決辦法。

回答

0

試試這個

$(document).ready(function(){ 
    //alert($("#test").data("title"));     
    $("#test").append(escape($("#test").data("title"))); 
    }); 
+1

它得到了轉義,因爲你追加它的HTML元素,而無需再次逃脫它,更新搗鼓過, http://jsfiddle.net/FJTW8/4/ – ripu1581 2013-04-26 10:03:03

0

此代碼將工作:

$(document).ready(function(){ 
    $("#test").text($("#test").data("title")); 
}); 

因爲.append()是一樣的.html();

0

答案是不完全正確 你應該這樣做:

$(document).ready(function(){    
    $("#test").append(htmlEntities($("#test").data("title"))); 
    }); 
function htmlEntities(str) { 
    return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;'); 
} 

見的jsfiddle http://jsfiddle.net/FJTW8/16/