带有replace()的jQuery text()不会替换文本

时间:2013-06-11 08:07:11

标签: jquery html text replace

我有以下H2:

<h2 id="resetPWSuccess">Password reset instructions have been sent to *|RESETPASSWORDEMAIL|*</h2>

我想将*|RESETPASSWORDEMAIL|*替换为jQuery变量emailAddress中的当前电子邮件地址。

我尝试过以下操作但不起作用:

$('h2#resetPWSuccess').text().replace('*|RESETPASSWORDEMAIL|*', emailAddress).show();

有没有办法更新h2文本 - 如果可能,我更喜欢一行。

5 个答案:

答案 0 :(得分:10)

请改用:

$('#resetPWSuccess').text(
   $('#resetPWSuccess').text().replace('*|RESETPASSWORDEMAIL|*', emailAddress)
).show();

请注意,我还从选择器中删除了h2:它没有用,只比使用id慢。当您要求jQuery搜索#resetPWSuccess时,它会使用非常快的原生getElementById函数。

来自jQuery的源代码:

// Shortcuts
if ( (match = rquickExpr.exec( selector )) ) {
    // Speed-up: Sizzle("#ID")
    if ( (m = match[1]) ) {
        if ( nodeType === 9 ) {
            elem = context.getElementById( m );

答案 1 :(得分:4)

我建议采用不同的方法:

<h2 id="resetPWSuccess">Password reset instructions have been sent to <span id="resetPWemail"></span></h2>

和相应的js:

$('#resetPWemail').text(emailAddress);
$('#resetPWSuccess').show();

答案 2 :(得分:2)

像这样使用。

$('#resetPWSuccess').text(
  $('#resetPWSuccess').text().replace('*|RESETPASSWORDEMAIL|*', 'neeraj@gmail.com')
)

参见演示Demo

答案 3 :(得分:2)

试试这个

$("#resetPWSuccess").text(
  $('#resetPWSuccess').text().
     replace('*|RESETPASSWORDEMAIL|*', $("#EmailID").val()))

答案 4 :(得分:2)

你甚至可以简单地这样做

 <h2 id='resetPWSuccess'></h2>

 $('h2#resetPWSuccess').text('Password reset instructions have been sent to '+emailaddress).show();