我可以在jQuery .text()上使用Javascript字符串对象方法吗?

时间:2013-05-21 08:42:55

标签: javascript jquery string

想要点击一下操作一些文字:

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

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

8 个答案:

答案 0 :(得分:4)

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

将结果分配给文本

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

答案 2 :(得分:0)

您应该收到一个原生字符串。

  

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

Documentation

示例:

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

Fiddle

答案 3 :(得分:0)

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

答案 4 :(得分: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>')});

答案 5 :(得分:0)

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

答案 6 :(得分:0)

你也可以这样做:

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

使用此重载:

enter image description here

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

使用已经提供的API

答案 7 :(得分:0)

正如您所说,点击文字您想要更改文字,但是为什么要使用

$('.Jserep').change(

应该是.click()事件权利。正如@billyonecan告诉你可以使用替换它。

希望这能回答你的问题