Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use jQuery click to handle anchor onClick()

I have a set of dynamically generated anchor tags in a for loop as follows:

<div id = "solTitle"> <a href = "#"  id = "' + tagId + '" onClick = "openSolution();"> ' + solTitle + '</a></div> <br>'; 

Once this code is executed the html output for one of the case would look like:

<div id = "solTitle"> <a href = "#"  id = "solution0" onClick = "openSolution();">Solution0 </a></div> <br>  <div id = "solTitle"> <a href = "#"  id = "solution1" onClick = "openSolution();">Solution1 </a></div> <br> 

Now I want different texts to be displayed on clicking the above links. openSolution() looks like this:

function openSolution() {     alert('here');     $('#solTitle a').click(function(evt) {         evt.preventDefault();         alert('here in');         var divId = 'summary' + $(this).attr('id');          document.getElementById(divId).className = '';      }); } 

When I execute it and click on either of the links, the flow doesnot come inside the jquery click handler. I checked it by the above alerts used. It only displays the alert - 'here' and not the alert - 'here in'. On clicking the link second time, everything works perfectly with correct value of divId.

like image 591
crazy_coder Avatar asked Jan 18 '12 09:01

crazy_coder


People also ask

Can we use Onclick in anchor tag?

Using onclick Event: The onclick event attribute works when the user click on the button. When mouse clicked on the button then the button acts like a link and redirect page into the given location. Using button tag inside <a> tag: This method create a button inside anchor tag.

How do I know which anchor is clicked in jQuery?

click(function(e){ var id = e.target.id; alert(id); }); }); In this way, e. target is the element you have clicked on.

How do I hit an anchor tag in JavaScript?

Click() function is used when you want to trigger click event. ie. when you want to trigger some action when anchor tag is clicked.


2 Answers

The first time you click the link, the openSolution function is executed. That function binds the click event handler to the link, but it won't execute it. The second time you click the link, the click event handler will be executed.

What you are doing seems to kind of defeat the point of using jQuery in the first place. Why not just bind the click event to the elements in the first place:

$(document).ready(function() {     $("#solTitle a").click(function() {         //Do stuff when clicked     }); }); 

This way you don't need onClick attributes on your elements.

It also looks like you have multiple elements with the same id value ("solTitle"), which is invalid. You would need to find some other common characteristic (class is usually a good option). If you change all occurrences of id="solTitle" to class="solTitle", you can then use a class selector:

$(".solTitle a") 

Since duplicate id values is invalid, the code will not work as expected when facing multiple copies of the same id. What tends to happen is that the first occurrence of the element with that id is used, and all others are ignored.

like image 131
James Allardice Avatar answered Oct 13 '22 12:10

James Allardice


Lets take an anchor tag with an onclick event, that calls a Javascript function.

<a href="#" onClick="showDiv(1);">1</a> 

Now in javascript write the below code

function showDiv(pageid) {    alert(pageid); } 

This will show you an alert of "1"....

like image 44
Tapan kumar Avatar answered Oct 13 '22 12:10

Tapan kumar