1

想通过点击操作一些文本:

$('.Jserep').change(function () {
    $(".Jappended").text().replace("<serep>Y</serep>", 'serep>N</serep>')
});

但它不起作用。.text() 是否返回我可以使用替换的本机字符串对象?

4

8 回答 8

4
$(".Jappended").text($(".Jappended").text().replace("<serep>Y</serep>", 'serep>N</serep>'))

将结果分配给文本

于 2013-05-21T08:45:40.410 回答
1

你所做的事情不起作用的原因是你没有在任何地方使用结果。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>'));
于 2013-05-21T08:45:05.783 回答
0

您应该收到一个本机字符串。

.text() 方法的结果是一个字符串,其中包含所有匹配元素的组合文本。

文档

例子:

var text = $("#test").text();
alert(typeof text); //outputs string

小提琴

于 2013-05-21T08:45:25.957 回答
0

根据 Api:是的。 http://api.jquery.com/text/ "获取匹配元素集合中每个元素的组合文本内容,包括它们的后代,或者设置匹配元素的文本内容。" 但是根据您的代码,您会收到字符串,进行替换,但永远不要在任何地方插入字符串。结果将只是垃圾收集。

于 2013-05-21T08:46:04.050 回答
0

我想你想要的是这样的:

$('.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>')});
于 2013-05-21T08:46:08.797 回答
0
$('.Jserep').change(function () {
    $(".Jappended").text($(".Jappended").text().replace("<serep>Y</serep>", 'serep>N</serep>'));
});
于 2013-05-21T08:46:53.093 回答
0

你也可以这样做:

$(".Jappended").text(function (i,n){return n.replace("<serep>Y</serep>", 'serep>N</serep>');});

使用这个重载:

在此处输入图像描述

无需打开新变量,也无需调用text()两次等。

使用 API已经提供的内容

于 2013-05-21T08:48:11.500 回答
0

正如您所说,单击文本时您要更改文本,但是为什么要使用

$('.Jserep').change(

它应该是 .click() 事件的权利。正如@billyonecan 告诉您的那样,您可以在其上使用替换。

希望这回答了你的问题

于 2013-05-21T08:48:43.110 回答