我有下一个默认显示“买入”值的输入
<input class="myVar" data-buy="50000" data-sell="80000" value="5000" />
<button id="change">CHANGE PRICES</button>
<button id="toggle">TOGGLE</button>
我点击“#change”是为了增加“买入”和“卖出”的数量
$(document).on("click", #change", function(){
$(".myVar").attr("data-buy",6000);
$(".myVar").attr("data-sell",9000);
});
现在,如果我切换“myVar”中显示的值,输入将恢复为默认值。
$("#toggle").toggle(
function(){
$(".myVar").val($(".myVar").data("buy"));
},
function(){
$(".myVar").val($(".myVar").data("sell"));
}
);
我做错了什么?
我知道需要在DOM上设置变量,
我尽力了
$(document).on("click", ".change", function(){
$(".myVar").attr("data-buy",6000);
$(".myVar").attr("data-sell",9000);
$("#toggle").click()
});
但它改变了行为,但它仍然显示初始值。
2条答案
按热度按时间pu3pd22g1#
删除
$(...).data
并使用$(...).attr("data-type",...)
我就是这么做的
k5ifujac2#
你的代码中有一些问题。
第一个是你在你的环境中唯一的问题,我想。Using .data() is the correct way来访问和操作数据属性,但我注意到您的代码混合使用
.data()
和.attr()
来访问相同的值,例如:和/或
将使用
.attr()
的情况替换为始终使用.data()
,这是让代码按照您所描述的那样工作所需的全部内容(对于旧版本的jQuery,请参阅下一项)。下面是一个使用jQuery 1.8的工作片段。第二个问题与
.toggle()
有关。在旧版本的jQuery中,有一个toggle()
event handler,但它很久以前就被弃用了(在2012年的1.8版本中!假设你使用的是jQuery的一个旧版本,它仍然可以工作,但是仅仅出于安全原因,你可能应该升级。在任何不到10年的jQuery版本中,
.toggle()
will show or hide an element。在您的代码中,这意味着切换按钮在页面加载时立即消失。下面是上面代码片段的一个副本,只是为了使用当前版本的jQuery而进行了更改,这说明了这一点。如果升级jQuery,也需要更新这段代码。您真正需要的只是一个单击处理程序AFAICT,以触发显示其中一个值。问题是您需要跟踪当前显示的是哪一个,以便在单击按钮时可以显示另一个。也许我们可以在输入上使用另一个
data
属性来跟踪当前正在显示的内容,例如:然后,当您单击切换按钮时,您可以检查当前显示的是哪个,加载并显示另一个,然后更新该属性以保存当前状态。注意,我们需要一个额外的case来处理初始状态,当显示的值既不是买入值也不是卖出值时(我不确定这只是一个输入错误还是实际需要)。
下面是一个例子: