2012-02-21 1 views
2
(function($) { 

    $.fn.htmlCodes = function(){ 
     var $this = this; 
     var body = this.html(); 
     body = body.replace(':)', '&#9786;').replace('<3', '&#9829;'); 
     this.html(body); 
    }; 


})(jQuery); 

私はこのスマイル顔をスマイリーフェイスエンティティに変更するようにこのJQueryプラグインを作成しました。 (そして心臓)このjavascriptはどうやってテキストを "ハート"のシンボルに置き換えませんか?

しかし、心臓は機能しません!何らかの理由で、スマイリーは動作しますが、心臓は動作しません。あなたがこれを行う場合

答えて

10

作品...

.replace('&lt;3', '&#9829;'); 

DEMO:http://jsfiddle.net/ZdJh5/

.html()<シンボルのためにあなたにHTMLの文字コードを与えています。

+1

私にそれを打つ...:D –

2

<はHTMLの特殊文字です。これはjQueryのhtml関数が返すもので、<の代わりに&lt;を置き換える必要があります。

(function($) { 

    $.fn.htmlCodes = function() { 
     var $this = this; 
     var body = this.html(); 
     body = body.replace(/:\)/g, '&#9786;').replace(/&lt;3/g, '&#9829;'); 
     this.html(body); 
    }; 

})(jQuery); 

それ以外の場合は、最初のインスタンスのみが置き換えられます。また、キャッチオールのために、あなたは/gフラグを使用する必要があります。そしてa quick demo to show that it works。 ☺

1
body = body.replace(':)', '&#9786;').replace('&lt;3', '&#9829;'); 

それは&lt;としてエンコードされます<可能です。