简体   繁体   中英

Call a function onClick and passing it a value from the element's data-* attribute

I have links like this:

<li><a href="#" data-value="Codes">Get codes</a></li>
<li><a href="#" data-value="Product">Get products</a></li>

How can I make it so that when I click on the link then a function gets called passing the value that's contained in data-value?

function refreshGrid(value) { }

Try the following:

$('li > a[href="#"][data-value]').click(function (e) { // On click of all anchors with a data-value attribute and a href of # that are immediate children of li elements (nb this selector can be modifed to suit your needs)
  e.preventDefault(); // prevent the default (navigate to href)
  refreshGrid($(this).data('value')); // call your refreshGrid function with the value contained in the 'data-value' attribute
});
var linkValue = $("li a").attr("data-value");

Edit: Better example

$("li a").click(function () {
    var myDataValue = $(this).attr("data-value");
    refreshGrid(myDataValue);
});

here's a quick sample

$('ul').on('click','a[data-value]',function(){
    refreshGrid(this.getAttribute('data-value'));
    return false;
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM