如何在jQuery中进行“简单”查找和替换?

时间:2011-04-18 09:20:13

标签: jquery string replace

我是jquery的新手,我在做我认为应该是一个非常简单的查找和替换操作时遇到了麻烦。

我想更改“< p>”内的文字标签。例如,我可能想用“ a title ”替换“你的标题”。

  <div id="ValidationSummary">
    <ul>
        <li>
            <p>
                Please specify your title</p>
        </li>
        <li>
            <p>
                Please enter your first name</p>
        </li>
        <li>
            <p>
                Please enter your surname</p>
        </li>
    </ul>
    </div>

这里是没有做任何事情的jQuery:

$(function() {
    $('#ValidationSummary').text().replace("your title", "a title");
    $('#ValidationSummary').text().replace("first name", "christian name");
    $('#ValidationSummary').text().replace("your surname", "your last name");
};

我真的看不出我做错了什么想法?

请帮忙,谢谢

4 个答案:

答案 0 :(得分:15)

JS中对字符串的任何更改都会产生新字符串,而不是修改那里的字符串。幸运的是,jQuery可以同时轻松地检索和修改文本:

$('#ValidationSummary p').text(function (i, old) {
     return old
         .replace('your title', 'a title')
         .replace('first name', 'christian name')
         .replace('your surname', 'your last name');
});

说明:

  • return来自.text()的字符串告诉jQuery用这个新字符串替换那里的内容(以old传递)。

  • 由于replace()每次都会返回一个新字符串,因此我们可以将多个调用链接在一起,这样我们只需要一个.text()调用和return语句。

  • 我使用了选择器'#ValidationSummary p',因为使用.text().html() 将替换正在运行的元素的整个内容

答案 1 :(得分:4)

$(function() {
    var text = $('#ValidationSummary').text().replace("title", "your title"); // this will give the text after replacement, but it will not set the text to ValidationSummary
    $('#ValidationSummary').text(text);

    text = $('#ValidationSummary').text().replace("first name", "christian name");
    $('#ValidationSummary').text(text);

    text = $('#ValidationSummary').text().replace("your postcode", "your zipcode");
    $('#ValidationSummary').text(text);
};

答案 2 :(得分:1)

JSFIDDLE

$(function() {
    $('#ValidationSummary').html($('#ValidationSummary').html().replace("title", "Mister"));
    $('#ValidationSummary').html($('#ValidationSummary').html().replace("first name", "ABC"));
    $('#ValidationSummary').html($('#ValidationSummary').html().replace("surname", "XYZ"));       
});

有效,但不认为它是可靠的。

答案 3 :(得分:0)

尝试这个......

 $('#ValidationSummary').text($('#ValidationSummary').find('P').text().replace("title", "your title"));
 $('#ValidationSummary').text($('#ValidationSummary').find('P').text().replace("first name", "christian name"));
 $('#ValidationSummary').text($('#ValidationSummary').find('P').text().replace("your postcode", "your zipcode"));