JQuery数据函数返回错误的值
JQuery data function returns the wrong value
我有一个输入文本,它的一个data
属性在我的视图模型更改后立即更改(多亏了Knockout)。绑定操作如下:
<input data-bind="attr:{'data-customitem': customItemId}" />
在我的视图模型的某个地方,我有一个访问输入并检索data-customitem
属性值的函数。
第一次绑定输入时,它获得一个id,例如X
。所以HTML看起来像这样:
<input data-bind="attr:{'data-customitem': customItemId}" data-customitem='X'/>
然后我的模型发生了变化,knockout将属性值更新为Y
。HTML现在看起来像这样:
<input data-bind="attr:{'data-customitem': customItemId}" data-customitem='Y'/>
问题是:
$element.data("customitem")
返回X
$element.attr("data-orderitem")
返回Y
为什么jQuery数据函数返回数据属性的旧值?在后台是否存在缓存?
jQuery的data
函数和attr
函数是不同的。data
函数绑定到元素(不需要绑定到data
属性)。如果一个元素有data-X='val'
,你可以同时使用 jquery的data
函数和attr
函数来获取值:
$('el').data('X')
$('el').attr('data-X')
然而,如果你改变数据(使用data(...)
函数)-获得新的值,你必须使用data
函数(这种改变不会影响属性的值),反之亦然-如果你使用attr
函数改变值-它不会影响data()
函数的值。
下面是一个例子:
$(function() {
$('#btn1').click(function() {
console.log('value using data function: ' + $('#d1').data('name1'))
console.log('value using attr function: ' + $('#d1').attr('data-name1'))
});
$('#btn2').click(function() {
$('#d1').data('name1', 'new value - using data');
});
$('#btn3').click(function() {
$('#d1').attr('data-name1', 'new value - using attr');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="d1" data-name1="abc"></div>
<button id="btn1">Get Values</button><br />
<button id="btn2">Change Values using data function</button><br />
<button id="btn3">Change Values using attr function</button><br />
您正在做的更改(使用data-bing="attr:{...}"
)不影响jQuery的data
函数的值
相关文章:
- CKFinder 3为所选文件返回错误的URL
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 用于查询错误转换的角度资源返回列表
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- WebView返回错误的window.innerHeight
- Javascript表单验证:表单在错误返回时提交:
- 谷歌地图上的常量错误返回maxZoomService.getMaxZoomAtLatLng()
- Jquery .ajax POST 函数错误返回 asp.net MVC.
- happy 不会从 Boom 错误返回数据属性
- 操作结果在 ajax 调用中作为错误返回
- 我得到了错误“返回绑定”.PBKDF2(密码、盐、迭代、keylen、回调);^ TypeError: Not a bu
- 节点解析错误:返回时意外的令牌
- Bluebird承诺库的结果作为错误返回
- Jquery, php ajax post 500内部服务器错误返回
- 未定义的索引问题和错误返回
- 未从json文件中导入数据:Unhandled rejection错误返回
- Jquery错误返回bool值
- 表单提交后重新加载页面,尽管没有验证和错误返回
- 使用POST方法的AJAX函数会创建以下错误.错误:返回状态码414请求uri太大