Grundsätzlich kann ich das Element mit nicht mehr auswählen, wenn ich ein div auf eine Seite mit einem data-test
Attribut geladen habe und den Wert mit jquery's ändere.data('test')
$('div[data-test="newValue"]')
var howMany = $('.t[data-test="test"]').length;
$('.result').html('start there are ' + howMany + ' divs with data "test"<br /><br />');
setTimeout(function() {
$('#one, #three').data('test', 'changed');
}, 500);
setTimeout(function() {
var test = $('.t[data-test="test"]').length,
changed = $('.t[data-test="changed"]').length;
$('.result').append('there are ' + test + ' divs still with data "test"<br /><br />there are ' + changed + ' divs still with data "changed"<br /><br />');
}, 1000);
setTimeout(function() {
$('.t').each(function() {
$('.result').append('div #' + $(this).attr('id') + ' has the test data of: ' + $(this).data('test') + '<br /><br />');
});
}, 1500);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="t" id="one" data-test="test">1</div>
<div class="t" id="two" data-test="test">2</div>
<div class="t" id="three" data-test="test">3</div>
<div class="t" id="four" data-test="test">4</div>
<div class="result"></div>
jquery
html
jquery-selectors
Adam Merrifield
quelle
quelle
Antworten:
jQuery .data () wird anfänglich mit Werten aus den
data-
Attributen gefüllt , aber beim Festlegen wird nur der zugehörige neue Wert im Speicher gespeichert. Das Attribut im DOM wird nicht geändert. Um das Attribut zu ändern, müssen Sie Folgendes verwenden:$('#one, #three').attr('data-test', 'changed');
Die Dokumente finden Sie unter http://api.jquery.com/jQuery.data/
quelle
.data
manipuliert das DOM nicht wirklich, sondern hält nur die Daten im Speicher?Das liegt daran, dass ich denke, dass Sie
.data()
ein spezielles Cache-Objekt in jQuery verwenden, um Daten zu speichern (tatsächlich können Sie sogar das Speichern von Objekten oder komplexen Datentipps ausgleichen), wenn Sie überprüfen, ob alle Attribute unverändert sind. Wenn Sie das Attribut ändern möchten, verwenden Sieattr()
quelle