我正在尝试制作一个基本替换代码,每次都替换匹配。
(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元素是一个笑脸。
答案 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" />'
});
最终版本。它为你逃脱了所有的角色。 :)