WHY DOES JQUERY ONLY AFFECT THE FIRST DIV ELEMENT?

ben reitman

Total Post:96

Points:676
Posted by  ben reitman
JQuery 
 3131  View(s)
Ratings:
Rate this:
Hi Expert, 

I am using the "replace" function to remove all non-numeric values in a div.

It seems Jquery replace only affects the first element.

Here is my Jquery:

$('#comment').each(function() {
    var thz = $(this);
    var repl = thz.html(thz.html().replace(/\D+/g, ''));
});

HTML Code:

<a id="comment1" href="#"> c2fđf011. </a>
<a id="comment1" href="#"> c20ff113. </a>
<a id="comment1" href="#"> c201gf76341. </a>

Result:

2011 c20ff113. c201gf76341.

The result I want is:

2011 20113 20176341

Please help,
Thanks in advance. 

  1. AVADHESH PATEL

    Post:604

    Points:4228
    Re: Why does Jquery only affect the first div element?

    Hi Expert,

    You have duplicate ids, Which is invalid and also jquery ID selector will return only the first one that appears in DOM. Change it to class and see it working:

    $('.comment').each(function() { 
         var thz =  $(this); var repl =
         thz.html(thz.html().replace(/\D+/g, '')); 
    });

    HTML

    <a class="comment1" href="#"> c2fdf011. </a> 
    <a class="comment1" href="#">c20ff113. </a> 
    <a class="comment1" href="#"> c201gf76341. </a>
    By the way had your id been like this:-

    <a id="comment1" href="#"> c2fdf011. </a> 
    <a id="comment2" href="#">c20ff113. </a> 
    <a id="comment3" href="#"> c201gf76341. </a>
    Starts with selector will help you.

    $('[id^=comment]').each(function() { // While using this better give a container context $('[id^=comment]', 'container').each(function...
        var thz = $(this);
        var repl = thz.html(thz.html().replace(/\D+/g, ''));
    });

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!