所以我几乎有一个按钮列表。我想访问变量或选择按钮,因为我需要返回有关所选选项的信息。
每当我执行此操作时,与i
,name
或list[name]
相关的所有console.log信息都会返回对话框中的最后一个选项。与$(this)一起使用的console.log只返回对话框。我在对话框中找到了所选按钮。
有人可以建议我在按钮的click
方法中返回所选值。如果通常以其他方式完成,请告诉我。
var i = 0, buttons = [];
var list_names = _.keys(list);
for(i = 0; i < _.size(list); i++) {
var name = _.keys(list)[i];
//var name = list_names[i];
//TODO: new line characters and/or <br /> don't actually make new lines
buttons[i] = {
text: "Name = " + name + "\n" +
"ID = " + list[name]._id + "\n" +
"Rev = " + list[name]._rev,
click: function() {
$(this).dialog("close");
//TODO: fix this always returns last item not the selected one
console.log($(this));
console.log(i);
console.log(name);
console.log(list[name]);
return callbackAfterSelect(list[name]);
}
}
};
$( "#dialog" ).dialog({
dialogClass: "no-close",
title: "Select Prescription",
width: 'auto',
buttons: buttons
});
我会说按钮'文字确实有不同且正确的Name
,ID
和Rev
显示。我认为var name
依赖于i
并且在按钮制作并显示i
之后,因此name
将是最后一个值。我只是不知道如何做到这一点不同,尝试了许多具有相同结果或错误的东西。
答案 0 :(得分:0)
将上面按钮的点击事件与上面的for循环绑定。将属性添加到按钮,如名称,索引,列表等...并在日志功能,写入console.log。
$('#' + list[name]._id).bind({
click: function () {
Log($(this).attr('Name'), $(this).attr('Index'), $(this).attr('ListName'), $('#' + list[name]._id));
}
});