想通过点击操作一些文本:
$('.Jserep').change(function () {
$(".Jappended").text().replace("<serep>Y</serep>", 'serep>N</serep>')
});
但它不起作用。.text() 是否返回我可以使用替换的本机字符串对象?
想通过点击操作一些文本:
$('.Jserep').change(function () {
$(".Jappended").text().replace("<serep>Y</serep>", 'serep>N</serep>')
});
但它不起作用。.text() 是否返回我可以使用替换的本机字符串对象?
$(".Jappended").text($(".Jappended").text().replace("<serep>Y</serep>", 'serep>N</serep>'))
将结果分配给文本
你所做的事情不起作用的原因是你没有在任何地方使用结果。replace
返回完成替换的新字符串。你正在做的相当于这个:
var str = "hi there";
str.replace("hi", "bye");
...它可以完成工作,但不会将其存储在任何地方。你需要
var str = "hi there";
str = str.replace("hi", "bye");
请注意我们如何使用replace
那里的返回值。
所以假设$(".Jappended")
只匹配一个元素:
var elm = $(".Jappended");
elm.text(elm.text().replace("<serep>Y</serep>", 'serep>N</serep>'));
根据 Api:是的。 http://api.jquery.com/text/ "获取匹配元素集合中每个元素的组合文本内容,包括它们的后代,或者设置匹配元素的文本内容。" 但是根据您的代码,您会收到字符串,进行替换,但永远不要在任何地方插入字符串。结果将只是垃圾收集。
我想你想要的是这样的:
$('.Jserep').change(function () {
var newText = $(".Jappended").text().replace("<serep>Y</serep>", 'serep>N</serep>');
$(".Jappended").text(newText);
});
或者更简单地说:
$('.Jserep').change(function () {
var el = $(".Jappended");
el.text(el[0].replace("<serep>Y</serep>", 'serep>N</serep>'));
});
或者更简单
$(".Jappended").text(function() {return this.innerTextreplace("<serep>Y</serep>", 'serep>N</serep>')});
$('.Jserep').change(function () {
$(".Jappended").text($(".Jappended").text().replace("<serep>Y</serep>", 'serep>N</serep>'));
});
你也可以这样做:
$(".Jappended").text(function (i,n){return n.replace("<serep>Y</serep>", 'serep>N</serep>');});
使用这个重载:
无需打开新变量,也无需调用text()
两次等。
使用 API已经提供的内容
正如您所说,单击文本时您要更改文本,但是为什么要使用
$('.Jserep').change(
它应该是 .click() 事件的权利。正如@billyonecan 告诉您的那样,您可以在其上使用替换。
希望这回答了你的问题