0

I have a button with empty id attribute. I want to get <a> by id that added dynamically to it.

note : I don't want to use createElement() to add <a>.

HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <a id="" class="btn" href="#"><button>Green</button></a><br><br>
  <a id="changeId" href="#"><button>Change Id!</button></a>
</body>
</html> 

JS

$(document).ready(function() {

  $("a#green").on("click", function(){
    $("body").css("background-color","green");
  });
  $("a#changeId").on("click", function(){
    $("a.btn").attr("id","green");
  });

});

Here is my code on jsFiddle

Bahman Parsa Manesh
  • 2,314
  • 3
  • 16
  • 32

3 Answers3

1

Since id is being created through another event, you can use event-delegation approach:

$("body").on("click","a#green", function(){

$(document).ready(function() {

  $("body").on("click","a#green", function(){
    $("body").css("background-color","green");
  });
  $("a#changeId").on("click", function(){
    $("a.btn").attr("id","green");
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
  <a id="" class="btn" href="#"><button>Green</button></a><br><br>
  <a id="changeId" href="#"><button>Change Id!</button></a>
</body>
Mamun
  • 66,969
  • 9
  • 47
  • 59
0

Okay:

 $(document).ready(function() {

      $("a#changeId").on("click", function(){
        $("a.btn").attr("id","green");
        $("a#green").on("click", function(){
            $("body").css("background-color","green");
      });
      });
    });
Nico Zimmer
  • 325
  • 1
  • 12
0

$(document).on("click", '#green', function(){}); is what you need. Because $("a#green") cannot be found because it is dynamically added to DOM. Or you can do some thing like $('body').on("click", '#green', function(){}); i.e. you need to take reference of static element. It can be any parent element of #green that is static.

$(document).ready(function() {
 $(document).on("click", '#green', function(){
   $("body").css("background-color","green");
  });
  $("a#changeId").on("click", function(){
   $("a.btn").attr("id","green");
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="" class="btn" href="#"><button>Green</button></a><br><br>
  <a id="changeId" href="#"><button>Change Id!</button></a>
Albert Einstein
  • 7,472
  • 8
  • 36
  • 71