82
<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?

zkanoca
  • 9,664
  • 9
  • 50
  • 94

8 Answers8

113

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>
Krish R
  • 22,583
  • 7
  • 50
  • 59
44

Like this:

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

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

CD..
  • 72,281
  • 25
  • 154
  • 163
9

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.

Sumner Evans
  • 8,951
  • 5
  • 30
  • 47
Mobetoh
  • 93
  • 1
  • 4
5

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);
                        }
                });
Wasim Khan
  • 1,177
  • 12
  • 13
3
function get_attribute(){ alert( $(this).attr("data-id") ); }

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

tripleee
  • 175,061
  • 34
  • 275
  • 318
2

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

James Kirkby
  • 1,716
  • 5
  • 24
  • 46
  • 1
    I'd rather `$('.facultySelecter').on("click", function() { var unhide = $(this).data("faculty"); });` – joninx Jun 11 '18 at 15:20
1

you can directly use anchor id or data-action attributes to trigger the event.

Html Code

<a id="option1" data-action="option1" data-id="10" data-option="21" href="javascript:void(0);" title="Click Here">Click Here</a>

jQuery Code:

$('a#option1').on('click', function(e) {
    e.preventDefault();
    console.log($(this).data('id') + '::' + $(this).data('option')) ;   
});

OR

$('[data-action="option1"]').on('click', function(e) {
    e.preventDefault();
    console.log($(this).data('id') + '::' + $(this).data('option'));    
});
rsmdh
  • 128
  • 1
  • 2
  • 12
0

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>
adam187
  • 3,193
  • 21
  • 15