jQuery text() with replace() doesn't replace t

2019-02-23 13:26发布

问题:

I have the following H2:

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

I want to replace the *|RESETPASSWORDEMAIL|* with current email address that I have in the jQuery variable emailAddress.

I have tried the following but it doesn't work:

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

Is there a way to update the h2 text - I prefer one line if possible.

回答1:

Use this instead :

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

Note that I also removed the h2 from your selector : it's useless and slower than just using the id. When you ask jQuery to search for #resetPWSuccess, it uses the very fast native getElementById function.

From jQuery's source code :

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


回答2:

I'd suggest a different approach:

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

And the corresponding js:

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


回答3:

Use like that.

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

See Demo Demo



回答4:

Try this

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


回答5:

You can even simply do this

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

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