0

wysiwyg の html タグをサニタイズしたいと考えています。特定のタグを別のタグに置き換えたい。これは、 replaceWith() がタグ内からコンテンツを削除するだけでほとんど機能します。私はこれをしたくありません。タグだけ交換したいです。これが私がこれまでに持っているものです。

テスト用テキスト:

This<div>is</div><div>a test</div><div>to clean&nbsp;</div><div>some tags</div><div><br></div>

期待される結果:

This<p>is</p><p>a test</p><p>to clean</p><p>some tags</p><p><br></p>

実結果:

This<p></p><p></p><p></p><p></p><p></p>

これは私が見つけて置き換えるために使用しているコードです

var thebad = ["h1","h2","h3","h4","h5","h6","div"];
        var thegood = ["","","","","","","<p>"];
        for(var i = 0; i < thebad.length; i++){
            $('.content').contents().find('body').find(thebad[i]).replaceWith(thegood[i]);
        }

HTMLタグを置き換えるときにテキストをHTMLタグ内に保持する方法を理解する必要があります。

前もって感謝します

4

3 に答える 3

1

これを試して:

$('div').contents().unwrap().wrap('<p />'); 

編集:

$('div').replaceWith(function(){ 
    return $("<p />").append($(this).contents()); 
});
于 2012-10-19T10:29:48.393 に答える
0
$("div").replaceWith(function() {
    var $div = $(this);
    return $("<p />")
        //.attr('class', $div.attr('class')) // uncomment if you need to give back same class value
        .html($div.html());
});
于 2012-10-19T11:04:38.740 に答える
0

これを試して:

var text = $("#test").html();
var replace_tags = { "<div>": "<p>", "</div>": "</p>",  "<div ": "<p "}; //edited
$.each( replace_tags, function(i,v){
     text = text.replace(new RegExp(i, 'g'),v);
});
//console.log(text);

テスト済み:

<div id='test'>
    <h1>dummy text</h1>
    <div>dummy text</div>
    <h1>dummy text</h1>
    <p>dummy text</p>
    <div>dummy text</div>
</div>

結果:

<h1>sadsad</h1>
<p>sadsad</p>
<h1>fsdfsd</h1>
<p>dasdasdasdsad</p>
<p>sadsad</p>
于 2012-10-19T11:07:56.650 に答える