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 回答