javascript - jQuery在更新后使用当前数据
问题描述
我正在尝试获取指定的当前状态seat
,因此每个座位都有free
开头的状态,并且状态将更改为'man', 'women'
or 'child'
。
因此,在我选择其中一种状态后,例如:free
to man
! 我想提醒我更新的座位的当前状态,它显示的是旧状态free
而不是man
!这是代码:
我不能使用click()
功能,因为我添加内容而不是单击.man, .woman
或.child
,所以我必须使用on()
。
$(document).on("click", ".man, .women, .child", function() {
var seatNumberHere = $(this).data("seat-number"); //Number of seat
var seatPerson = $(this).data("person"); //Displays 'men', 'women' or 'child'
$("[data-the-seat='" + seatNumberHere + "']").attr("data-status", seatPerson); //Updates the attribute data-status="free" to "men"
alert($("[data-the-seat='" + seatNumberHere + "']").data("status")); //Here is the problem it shows still "free"
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="seat" style="top: 10px; left: 130px;"
data-the-seat="1"
data-status="free"
data-toggle="popover"
data-html="true"
data-placement="top">
<div class='man' data-person='man' data-seat-number='1'>man</div><div class='women' data-person='women' data-seat-number='1'>women</div><div class='child' data-person='child' data-seat-number='1'>child</div>">
1
</div>
解决方案
在这里,您获得的数据将停留在最后访问的值上,因为您最后仅在 DOM 中更改此值
注意
所以两个不同的东西
为了在 dom (attr) 或 memory (data) 中获得相同的值,您应该将值设置为它们
见下文片段:
$(document).on("click", ".man, .women, .child", function() {
console.log(this);
var seatNumberHere = $(this).data("seat-number"); //Number of seat
var seatPerson = $(this).data("person"); //Displays 'men', 'women' or 'child'
$("[data-the-seat='" + seatNumberHere + "']").attr("data-status", seatPerson);
$("[data-the-seat='" + seatNumberHere + "']").data("status", seatPerson);
//Updates the attribute data-status="free" to "men"
alert("value of attr :"+$("[data-the-seat='" + seatNumberHere + "']").attr("data-status"));
alert("value of data :"+$("[data-the-seat='" + seatNumberHere + "']").data("status")); //Here is the problem it shows still "free"
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="seat"
style="top: 10px; left: 130px;"
data-the-seat="1"
data-status="free"
data-toggle="popover"
data-html="true"
data-placement="top">
<div class='man' data-person='man' data-seat-number='1'>M</div><div class='women' data-person='women' data-seat-number='1'>W</div><div class='child' data-person='child' data-seat-number='1'>C</div>"
1
</div>
推荐阅读
- sql - 选择包含 NULL 的 MAX RANK
- mongodb - 如何从 MongoDB 集合中的数组中选择记录
- android - 数据绑定 - 无法复制完整内容
- java - java如何验证证书以及为什么我得到SSLHandshakeException
- c# - 检查范围对象是否在列表中
- c++ - 错误:查找数字是否为素数的代码仅在 47 之前有效
- java - 编译器在使用 JavaFX 时抛出 InvocationTargetException
- c# - 什么时候应该在自动属性上使用显式字段?
- java - 如何将数据附加到Java中的字符串列表中
- django - Django - 在自定义 HTML 模板中呈现自定义表单字段