如何让我的替换代码工作?

时间:2012-05-14 22:37:56

标签: javascript jquery

我正在尝试制作一个基本替换代码,每次都替换匹配。

(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元素是一个笑脸。

2 个答案:

答案 0 :(得分:2)

你基本上扔掉了所有的替换品,但是最后一个。修改循环中的a并在最后更新HTML:

var a = $(this).html();
for (var i in obj) {
    a = a.replace(new RegExp(i, 'g'), obj[i]);
}
$(this).html(a);

答案 1 :(得分: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" />'
});​

最终版本。它为你逃脱了所有的角色。 :)