How to get the data-id attribute?
分类 : 互动问答 | 发布时间 : 2011-03-15 17:44:30 | 评论 : 11 | 浏览 : 1128405 | 喜欢 : 642
I'm using the jQuery quicksand plugin. I need to get the data-id of the clicked item and pass it to a webservice.
How do I get the data-id attribute? I'm using the .on()
method to re-bind the click event for sorted items.
$("#list li").on('click', function() {
// ret = DetailsView.GetProject($(this).attr("#data-id"), OnComplete, OnTimeOut, OnError);
alert($(this).attr("#data-id"));
});
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<ul id="list" class="grid">
<li data-id="id-40" class="win">
<a id="ctl00_cphBody_ListView1_ctrl0_SelectButton" class="project" href="#">
<img src="themes/clean/images/win.jpg" class="project-image" alt="get data-id" />
</a>
</li>
</ul>
回答(11)
- 1楼
To get the contents of the attribute
data-id
(like in<a data-id="123">link</a>
) you have to use$(this).attr("data-id") // will return the string "123"
or
.data()
(if you use newer jQuery >= 1.4.3)$(this).data("id") // will return the number 123
and the part after
data-
must be lowercase, e.g.data-idNum
will not work, butdata-idnum
will.
- 2楼
If we want to retrieve or update these attributes using existing, native JavaScript, then we can do so using the getAttribute and setAttribute methods as shown below:
Through JavaScript
<div id='strawberry-plant' data-fruit='12'></div> <script> // 'Getting' data-attributes using getAttribute var plant = document.getElementById('strawberry-plant'); var fruitCount = plant.getAttribute('data-fruit'); // fruitCount = '12' // 'Setting' data-attributes using setAttribute plant.setAttribute('data-fruit','7'); // Pesky birds </script>
Through jQuery
// Fetching data var fruitCount = $(this).data('fruit'); OR // If you updated the value, you will need to use below code to fetch new value // otherwise above gives the old value which is intially set. // And also above does not work in ***Firefox***, so use below code to fetch value var fruitCount = $(this).attr('data-fruit'); // Assigning data $(this).attr('data-fruit','7');
- 3楼
Important note. Keep in mind, that if you adjust the
data-
attribute dynamically via JavaScript it will NOT be reflected in thedata()
jQuery function. You have to adjust it viadata()
function as well.<a data-id="123">link</a>
js:
$(this).data("id") // returns 123 $(this).attr("data-id", "321"); //change the attribute $(this).data("id") // STILL returns 123!!! $(this).data("id", "321") $(this).data("id") // NOW we have 321
- 4楼
If you are not concerned about old IE browsers, you can also use HTML5 dataset API
HTML
<div id="my-div" data-info="some info here" data-other-info="more info here">My Awesome Div</div>
JS
var myDiv = document.querySelector('#my-div'); myDiv.dataset.info // "some info here" myDiv.dataset.otherInfo // "more info here"
Demo: http://html5demos.com/dataset
Full browser support list: http://caniuse.com/#feat=dataset
- 5楼
HTML
<span id="spanTest" data-value="50">test</span>
JS
$(this).data().value;
or
$("span#spanTest").data().value;
ANS : 50
Works for me!
- 6楼
I use $.data - http://api.jquery.com/jquery.data/
//Set value 7 to data-id $.data(this, 'id', 7); //Get value from data-id alert( $(this).data("id") ); // => outputs 7
- 7楼
var id = $(this).dataset.id
works for me!
- 8楼
Surprised no one mentioned:
<select id="selectVehicle"> <option value="1" data-year="2011">Mazda</option> <option value="2" data-year="2015">Honda</option> <option value="3" data-year="2008">Mercedes</option> <option value="4" data-year="2005">Toyota</option> </select> $("#selectVehicle").change(function () { alert($(this).find(':selected').data("year")); });
Here is the working example: https://jsfiddle.net/ed5axgvk/1/
- 9楼
Accessing data attribute with its own
id
is bit easy for me.$("#Id").data("attribute");
function myFunction(){ alert($("#button1").data("sample-id")); }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button type="button" id="button1" data-sample-id="gotcha!" onclick="myFunction()"> Clickhere </button>
- 10楼
using jQuery:
$( ".myClass" ).load(function() { var myId = $(this).data("id"); $('.myClass').attr('id', myId); });
- 11楼
This piece of code will return the value of the data attributes eg: data-id, data-time, data-name etc.., I have shown for the id
<a href="#" id="click-demo" data-id="a1">Click</a>
js:
$(this).data("id");
// get the value of the data-id -> a1
$(this).data("id", "a2");
// this will change the data-id -> a2
$(this).data("id");
// get the value of the data-id -> a2
相关阅读:
Remove duplicates from an array of objects in JavaScript
Check whether a string matches a regex in JS
jQuery event to trigger action when a div is made visible
jQuery event to trigger action when a div is made visible
Check if user is using IE with jQuery
Check if user is using IE with jQuery
Resize HTML5 canvas to fit window
How do I replace a character at a particular index in JavaScript?