Pul*_*tal 203 html jquery custom-data-attribute
我有一个属性的div data-myval = "10".我想更新它的价值; 如果我使用它会不会改变div.data('myval',20)?我div.attr('data-myval','20')只需要使用吗?
我在HTML5和jQuery之间感到困惑吗?请指教.谢谢!
编辑:更新div.data('myval')=20到div.data('myval',20),但仍然不支持HTML代码更新.
Jas*_*ant 403
HTML
<div id="mydiv" data-myval="10"></div>
Run Code Online (Sandbox Code Playgroud)
JS
var a = $('#mydiv').data('myval'); //getter
$('#mydiv').data('myval',20); //setter
Run Code Online (Sandbox Code Playgroud)
来自参考:
jQuery本身使用该
.data()方法在名称'events'和'handle'下保存信息,并保留任何以下划线('_')开头的数据名供内部使用.
应该注意的是,jQuery data()不会改变dataHTML中的属性.
因此,如果您需要更改dataHTML中的属性,则应使用.attr().
HTML
<div id="outer">
<div id="mydiv" data-myval="10"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
alert($('#outer').html()); // alerts <div id="mydiv" data-myval="10"> </div>
var a = $('#mydiv').data('myval'); //getter
$('#mydiv').attr("data-myval","20"); //setter
alert($('#outer').html()); //alerts <div id="mydiv" data-myval="20"> </div>
Run Code Online (Sandbox Code Playgroud)
看这个演示
Baq*_*qvi 35
你也可以使用以下attr东西;
HTML
<div id="mydiv" data-myval="JohnCena"></div>
Run Code Online (Sandbox Code Playgroud)
脚本
$('#mydiv').attr('data-myval', 'Undertaker'); // sets
$('#mydiv').attr('data-myval'); // gets
Run Code Online (Sandbox Code Playgroud)
要么
$('#mydiv').data('myval'); // gets value
$('#mydiv').data('myval','John Cena'); // sets value
Run Code Online (Sandbox Code Playgroud)
Joh*_*ria 33
请注意,.data()当您data-使用javascript 更改html5 属性时,jQuery 不会更新.
如果使用jQuery 在HTML元素中.data()设置data-属性,最好使用jQuery .data()来读取它们.否则,如果动态更新属性,则可能存在不一致.例如,看setAttribute(),dataset(),attr()下文.更改值,按几次按钮,然后查看控制台.
$("#button").on("click", function() {
var field = document.querySelector("#textfield")
switch ($("#method").val()) {
case "setAttribute":
field.setAttribute("data-customval", field.value)
break;
case "dataset":
field.dataset.customval = field.value
break;
case "jQuerydata":
$(field).data("customval", field.value)
break;
case "jQueryattr":
$(field).attr("data-customval", field.value)
break;
}
objValues = {}
objValues['$(field).data("customval")'] = $(field).data("customval")
objValues['$(field).attr("data-customval")'] = $(field).attr("data-customval")
objValues['field.getAttribute("data-customval")'] = field.getAttribute("data-customval")
objValues['field.dataset.customval'] = field.dataset.customval
console.table([objValues])
})Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h1>Example</h1>
<form>
<input id="textfield" type="text" data-customval="initial">
<br/>
<input type="button" value="Set and show in console.table (F12)" id="button">
<br/>
<select id="method">
<option value="setAttribute">setAttribute</option>
<option value="dataset">dataset</option>
<option value="jQuerydata">jQuery data</option>
<option value="jQueryattr">jQuery attr</option>
</select>
<div id="results"></div>
</form>Run Code Online (Sandbox Code Playgroud)
raj*_*wat 26
HTML
<div id="mydiv" data-myval="10"></div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
使用DOM的getAttribute()属性
var brand = mydiv.getAttribute("data-myval")//returns "10"
mydiv.setAttribute("data-myval", "20") //changes "data-myval" to "20"
mydiv.removeAttribute("data-myval") //removes "data-myval" attribute entirely
Run Code Online (Sandbox Code Playgroud)使用JavaScript的dataset属性
var myval = mydiv.dataset.myval //returns "10"
mydiv.dataset.myval = '20' //changes "data-myval" to "20"
mydiv.dataset.myval = null //removes "data-myval" attribute
Run Code Online (Sandbox Code Playgroud)如果您使用的是jQuery,请使用.data():
div.data('myval', 20);
Run Code Online (Sandbox Code Playgroud)
您可以使用存储任意数据.data(),但在使用时仅限于字符串.attr().
jQuery 方法.data()通过使用jQuery 方法更新由 jQuery 管理的内部对象,如果我是正确的。
如果你想data-attributes用一些点差更新你的,请使用——
$('body').attr({ 'data-test': 'text' });
Run Code Online (Sandbox Code Playgroud)
- 否则,$('body').attr('data-test', 'text');将工作得很好。
另一种方法是使用-
$.extend( $('body')[0].dataset, { datum: true } );
Run Code Online (Sandbox Code Playgroud)
- 将任何属性更改限制为HTMLElement.prototype.dataset,而不是任何额外的HTMLElement.prototype.attributes。
小智 5
为了保持 jQuery 和 DOM 同步,一个简单的选择可能是
$('#mydiv').data('myval',20).attr('data-myval',20);
Run Code Online (Sandbox Code Playgroud)