JQuery UI对话框按钮如何访问列表的选定值

时间:2015-05-23 18:35:44

标签: javascript jquery jquery-ui-dialog

所以我几乎有一个按钮列表。我想访问变量或选择按钮,因为我需要返回有关所选选项的信息。

每当我执行此操作时,与inamelist[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
    });

我会说按钮'文字确实有不同且正确的NameIDRev显示。我认为var name依赖于i并且在按钮制作并显示i之后,因此name将是最后一个值。我只是不知道如何做到这一点不同,尝试了许多具有相同结果或错误的东西。

1 个答案:

答案 0 :(得分:0)

将上面按钮的点击事件与上面的for循环绑定。将属性添加到按钮,如名称,索引,列表等...并在日志功能,写入console.log。

                $('#' + list[name]._id).bind({
                    click: function () {
                        Log($(this).attr('Name'), $(this).attr('Index'), $(this).attr('ListName'), $('#' + list[name]._id));
                    }
                });