1

毎回一致を置き換える基本的な置換コードを作成しようとしています。

(function($) {
    $.fn.replace = function(obj) {
        var a = $(this).html();
        for (var i in obj) {
            $(this).html(a.replace(i, obj[i]));
        }
    };
    $('#myDiv').replace({
        ':\)': '<img src="http://bit.ly/dbtoez" />'
    });
})(jQuery);​

しかし、それは機能しません。また、divで置き換えるオブジェクトにさらにプロパティを追加すると、機能しません。img要素はスマイリーフェイスです。

4

2 に答える 2

2

基本的に、最後のものを除くすべての置換を破棄しています。ループaを変更し、最後に HTML を更新します。

var a = $(this).html();
for (var i in obj) {
    a = a.replace(new RegExp(i, 'g'), obj[i]);
}
$(this).html(a);
于 2012-05-14T22:40:49.243 に答える
1

フィドル: http: //jsfiddle.net/iambriansreed/kCtLh/

(function($) {
    $.fn.replace = function(obj) {
        var a = $(this).html();
        for (var i in obj){
           a = a.replace(new RegExp(i.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"), "g"), obj[i]);
        }
        return $(this).html(a);
    };
})(jQuery);

$('#myDiv').replace({
    ':)': '<img src="http://bit.ly/dbtoez" />'
});​

最終版。それはあなたのためにすべてのキャラクターをエスケープします。:)

于 2012-05-14T22:47:47.060 に答える