Getting data-* attribute for onclick event for an html element

JavascriptJqueryHtml

Javascript Problem Overview


<a id="option1" data-id="10" data-option="21" href="#" onclick="goDoSomething(?,?);">
       Click to do something
</a>

I want to get the data-id and data-option values inside the function goDoSomething(10, 21) I have tried to use this reference: this.data['id'] but it did not work.

How can I do this?

Javascript Solutions


Solution 1 - Javascript

You can achieve this $(identifier).data('id') using jquery,

	<script type="text/javascript">
	
		function goDoSomething(identifier){		
			alert("data-id:"+$(identifier).data('id')+", data-option:"+$(identifier).data('option'));				
		}
		
	</script>
	
	<a id="option1" 
	   data-id="10" 
	   data-option="21" 
	   href="#" 
	   onclick="goDoSomething(this);">
	       Click to do something
	</a>

javascript : You can use getAttribute("attributename") if want to use javascript tag,

	<script type="text/javascript">
	
		function goDoSomething(d){
			alert(d.getAttribute("data-id"));
		}
		
	</script>
	
	<a id="option1" 
	   data-id="10" 
	   data-option="21" 
	   href="#" 
	   onclick="goDoSomething(this);">
	       Click to do something
	</a>

Or:

	<script type="text/javascript">
	
		function goDoSomething(data_id, data_option){		

			alert("data-id:"+data_id+", data-option:"+data_option);
		}
		
	</script>
	
	<a id="option1" 
	   data-id="10" 
	   data-option="21" 
	   href="#" 
	   onclick="goDoSomething(this.getAttribute('data-id'), this.getAttribute('data-option'));">
	       Click to do something
	</a>

Solution 2 - Javascript

Like this:

$(this).data('id');
$(this).data('option');

Working example: http://jsfiddle.net/zwHUc/

Solution 3 - Javascript

I simply use this jQuery trick:

$("a:focus").attr('data-id');

It gets the focused a element and gets the data-id attribute from it.

Solution 4 - Javascript

Check if the data attribute is present, then do the stuff...

$('body').on('click', '.CLICK_BUTTON_CLASS', function (e) {
                        if(e.target.getAttribute('data-title')) {
                            var careerTitle = $(this).attr('data-title');
                            if (careerTitle.length > 0) $('.careerFormTitle').text(careerTitle);
                        }
                });

Solution 5 - Javascript

function get_attribute(){ alert( $(this).attr("data-id") ); }

Read more at https://www.developerscripts.com/how-get-value-of-data-attribute-in-jquery

Solution 6 - Javascript

here is an example

 <a class="facultySelecter" data-faculty="ahs" href="#">Arts and Human Sciences</a></li>

 	$('.facultySelecter').click(function() {		
	var unhide = $(this).data("faculty");
    });

this would set var unhide as ahs, so use .data("foo") to get the "foo" value of the data-* attribute you're looking to get

Solution 7 - Javascript

User $() to get jQuery object from your link and data() to get your values

<a id="option1" 
   data-id="10" 
   data-option="21" 
   href="#" 
   onclick="goDoSomething($(this).data('id'),$(this).data('option'));">
       Click to do something
</a>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionzkanocaView Question on Stackoverflow
Solution 1 - JavascriptKrish RView Answer on Stackoverflow
Solution 2 - JavascriptCD..View Answer on Stackoverflow
Solution 3 - JavascriptMobetohView Answer on Stackoverflow
Solution 4 - JavascriptWasim KhanView Answer on Stackoverflow
Solution 5 - JavascriptRavi AmeriyaView Answer on Stackoverflow
Solution 6 - JavascriptJames KirkbyView Answer on Stackoverflow
Solution 7 - Javascriptadam187View Answer on Stackoverflow