我想在文本中找到并替换@jo
@josh
。
我的问题是,如果我一直点击span,输出会变成这样:
@joshshsh
JS
$(document).on("click", ".cclass", function() {
var p = '@jo';
var username = '@josh';
$("#comment").val($("#comment").val().replace(p, username)); //want to replace @jo to @josh just once
});
任何想法?
答案 0 :(得分:2)
您可以使用RegExp的强大功能,此处使用\b
作为字边界:
只需改变:
var p = '@jo';
为:
var p = /@jo\b/;
它只会替换@jo
后面跟着一些"非单词"性格,如:
(@jo,@anna
@jo @anna
,但不是@josh
)。
答案 1 :(得分:1)
尝试使用.one更改.on方法。
$(document).one("click", ".cclass", function() { /**/ });
一个方法只会触发绑定事件一次。
链接到这里:https://jsfiddle.net/pL6ut0ac/1/
编辑:
您可以使用.data方法在点击的元素上设置任意数据
$(this).data('paramName', paramValue);
答案 2 :(得分:1)
我看到两种方式:
使用正则表达式:
$(document).on("click", ".cclass", function() {
var p = new RegExp("@jo\\b");
var username = '@josh';
$("#comment").val($("#comment").val().replace(p, username)); //want to replace @jo to @josh just once
});
<强> jsFiddle example 强>
或者只是添加一个空格
$(document).on("click", ".cclass", function() {
var p = '@jo ';
var username = '@josh ';
$("#comment").val($("#comment").val().replace(p, username)); //want to replace @jo to @josh just once
});
<强> jsFiddle example 强>