Veri kimliği özelliği nasıl edinilir?


813

JQuery quicksand eklentisini kullanıyorum. Tıklanan öğenin veri kimliği almak ve bir web hizmetine geçmek gerekir. Veri kimliği özelliğini nasıl edinebilirim? .on()Sıralı öğeler için tıklama olayı yeniden bağlama yöntemini kullanıyorum .

$("#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>


57
JQuery'nın .live () metodu .sistem () lehine kaldırıldı: Yeni ziyaretçilere Bildirimi
dendini

3
# Uyarıyı kaldırmak gerekir, buna ihtiyacım yok :-)
Becs Carter

attr ("# data-id")) yanlış. düzeltildi: attr ("data-id"));
guido _nhcol.com.br_

@BruceAdams , şimdi kullanımdan kaldırıldığı on()gibi yöntemi kullanmak için soruyu düzenlemeye değer olabilir live()ve bu soru oldukça az ziyaretçi alır.
Rory McCrossan

Yanıtlar:


1637

Özelliğin içeriğini almak için data-id(gibi <a data-id="123">link</a>) kullanmanız gerekir

$(this).attr("data-id") // will return the string "123"

veya .data()(daha yeni jQuery> = 1.4.3 kullanıyorsanız)

$(this).data("id") // will return the number 123

ve sonraki kısım data-küçük harf olmalıdır, örneğin data-idNumçalışmaz, ancak data-idnumçalışacaktır.


7
attr()Kullanmak zorundaydım çünkü jQuery kullanarak zip kodlarından önde gelen sıfırları sıyırdı data(), TFM şöyle diyor: "jQuery 1.4.3 HTML 5 veri öznitelikleri otomatik olarak jQuery'nin veri nesnesine çekilecek. ... JavaScript değeri (boolelar, sayılar, nesneler, diziler ve null değerleri içerir) Değer, yalnızca değerin temsilini değiştirmezse bir sayıya dönüştürülür. Örneğin, "1E02" ve "100.000" eşdeğerdir sayı olarak (sayısal değer 100), ancak dönüştürüldüklerinde temsillerini değiştirirler, böylece dize olarak kalırlar. "
Wesley Murch

43
Bu benim için 'tanımsız' döndürüyor.
2014'te

4
Bazıları için açık olsa da, bununla ilgili sorun yaşayanlar için .attr () kullanırken parantez içindeki metnin özel veri özelliğiniz olarak ayarladığınız her şeyle eşleşmesi gerektiğini belirtmek gerekir. yani özel veri özniteliği veri hacmiyse, .attr ("veri hacmi") kullanarak buna başvurmanız gerekir . Ve jQuery 1.4.3 ile yukarı ve .data () kullanarak, köşeli parantez içindeki metin , veri öneki olmadan özel veri özniteliğinizle eşleşmelidir . yani özel veri özniteliği veri birimiyse, .data ("birim") kullanarak buna başvurmanız gerekir .
Luke

111
Rapor etmeyenler için işe yaramazsa, özelliğinizin yalnızca küçük harfler içerdiğinden emin olun. Örneğin, "data-listId", "data-listid" olmalıdır. Nedeni için stackoverflow.com/questions/10992984/… adresine bakın .
WindChimes

2
veya$(this).data().id //returns 123
Dem Pilafian

170

Bu öznitelikleri mevcut, yerel JavaScript kullanarak almak veya güncellemek istiyorsak, aşağıda gösterildiği gibi getAttribute ve setAttribute yöntemlerini kullanarak bunu yapabiliriz:

JavaScript ile

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

JQuery aracılığıyla

// 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');

Bu dokümanları okuyun


90

Önemli Not. data- Özniteliği JavaScript aracılığıyla dinamik olarak ayarlarsanız data()jQuery işlevine yansıtılmayacağını unutmayın . Ayrıca data()fonksiyon üzerinden ayarlamanız gerekir .

<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

İyi bir nokta ... bir özniteliklerden veri yenilemek için veri ().
Harag

1
Veri özniteliği değerini dinamik olarak değiştirmek ve erişmek için önemli bir noktadır.
Motahar Hossain


19

Kimse bahsetmedi şaşırttı:

<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"));
});

İşte çalışma örneği: https://jsfiddle.net/ed5axgvk/1/


2
Çok Güzel Cevap. Çok teşekkürler.
Ruberandinda Sabır

13

HTML

<span id="spanTest" data-value="50">test</span>

JS

$(this).data().value;

veya

$("span#spanTest").data().value;

ANS: 50

Benim için çalışıyor!




11

Kendi veri özniteliğine erişmek idbenim için biraz kolay.

$("#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>


7

Bu kod parçası veri özniteliklerinin değerini döndürecektir örneğin: data-id, data-time, data-name vs .., id için gösterdim

<a href="#" id="click-demo" data-id="a1">Click</a>

js:

$(this).data("id");

// data-id değerini alın -> a1

$(this).data("id", "a2");

// bu veri kimliğini değiştirecek -> a2

$(this).data("id");

// data-id değerini alın -> a2


4

jQuery kullanarak:

  $( ".myClass" ).load(function() {
    var myId = $(this).data("id");
    $('.myClass').attr('id', myId);
  });


0

Bir sürem var. Tanımlanan kullanılan data-txt-lang özniteliğinin değerini almak istiyorum.

$(document).ready(function ()
{
<span class="txt-lang-btn" data-txt-lang="en">EN</span>
alert($('.txt-lang-btn').attr('data-txt-lang'));
});

0

Sorun, açılır liste veya liste seçeneği veya seçilen seçeneği belirtmiyoruz, İşte açılan için bir örnek, bir veri özniteliği veri kaydı varsayıyorum.

$('#select').on('change', function(){
        let element = $("#visiabletoID");
        element.val($(this).find(':selected').data('record'));
    });
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.