我想根据用户在表单上的选择来更改按钮(提交)上的data-confirm属性的值。我将以下内容放在下拉列表的更改功能中:
...
if($("#"+select_name).val() == "abc")
{
$(".variable_button").attr("data-confirm","abc is good choice!");
} else
{
$(".variable_button").attr("data-confirm","abc would have been great but this is fine too...");
}
...
我面临的问题是,一旦分配了非空字符串,显然无法更改数据确认。我把它设置为服务器代码中的“”。并且,当用户首次在下拉列表中进行选择时,它将更改为上面显示的两条消息之一。但是,如果用户再次更改选择,则数据确认消息不会更改。这是每个设计还是我错过了什么?
答案 0 :(得分:3)
请勿使用.attr()
,请使用.data()
:
var newData = ($("#"+select_name).val() == "abc")
? "abc is good choice!"
: "abc would have been great but this is fine too...";
$(".variable_button").data("confirm", newData);
答案 1 :(得分:0)
jQuery允许您使用data-
方法更新.attr()
属性,因此其他内容正在破坏。
以下是一个工作示例(JSFiddle):
var counter = 1;
$('#click').click(function() {
button = $('#click');
console.log(button.attr('data-confirm'));
button.attr('data-confirm', 'this is test ' + counter);
console.log(button.attr('data-confirm'));
counter++;
});
你能尝试在JSFiddle中重现这个问题吗?
在重新阅读您的问题时,听起来事件处理程序在用户第二次更改选择时未触发。看看你是否可以在事件处理程序中设置一个断点,看它是否被击中。