rawatadit
rawatadit

Reputation: 31

Getting the id of the anchor tag which was clicked

This is a list representation of data which is coming from a php database.The list is fetched using a foreach php loop and the data inside the achor tag is populated accordingly.

<?php foreach($array as $iterate):?>
 <div class="col-sm-3">
  <div class="panel panel-default">
   **<a onClick='theFunction();' id="hello" href="#myModal" style="text-decoration:none;">**
    <div class="panel-heading">
     <img src ="audi_sillhouete.jpg" style="height:100%; width:100%;">
       <p id="10" style="position:absolute; top:10%; padding-left:5%; padding-right:15%;"><?php echo $iterate->test_name ?></p>
    </div>
   </a>                    
  </div>
</div>
<?php endforeach;?>

As you can see here, inside the anchor tag i have href-ed it to a modal box which will show a message whenever the user clicks on any of the link. There is a button in the modal window which will take the user to a different page. The issue is that i want to pass certain value along with the url, but cannot do so as the link to the next page is defined in the modal window specification part. So i came up with this solution. I thought of using the id attribute of the anchor tag, I tried to get the id attribute of the anchor which was clicked using javascript.

<script type="text/javascript">
 function theFunction()
 {
    var id = $('a', this).attr('id');
    alert(id);
 }</script>

From this i wanted to initialize a php variable and then use that php variable to pass as value in the href of the modal window button. But the value i am getting in the alert box is 'undefined' for some reason. I have tried all possible combinations of this.

$('a',this).attr('id');
$this.id;

Everything return 'undefined'.

Reference-This is the code for the modal window part.

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title">Instructions</h4>
      </div>
      <div class="modal-body">
       Your test is about to commence. A timer will be initiated after the moment you start the test. You may choose to answer a question, or leave it empty. You can also attempt the questions in any order that you find suitable.<br><br>Upon completion of the test, click on "Submit" to see your performance statistics.<br><br><br>Good luck!
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <a href="../test/pretest.php?test=<?php echo $testname?>" style="text-decoration:none;color:white;"><button type="button" class="btn btn-primary">Continue</button></a>
      </div>
    </div><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

Upvotes: 2

Views: 16529

Answers (3)

bart
bart

Reputation: 15288

The below jQuery function runs through all the a tags on page load and adds id to the end of the link.

$(function(){
    $('a').each(function(){
        var id = $(this).attr('id');
        var url = $(this).attr('href') + '?id=' + id;
        $(this).attr('href',url);
        });
});

https://jsfiddle.net/yc1hswet/

Upvotes: 1

Light
Light

Reputation: 1097

You can use other attribute in anchor like :

<a href='' id='hello' para-id='somevalue'></a>

alert($("#hello").attr("para-id"));

Upvotes: 2

Rino Raj
Rino Raj

Reputation: 6264

Please try this

$(document).on('click', 'a', function () {
    alert(this.id);
});

DEMO

Upvotes: 3

Related Questions