在表格中,每一行都有一个编辑按钮。显示或隐藏按钮取决于此行中的另一个值

时间:2015-09-30 15:06:17

标签: javascript jquery

我在js文件中定义了一个表,最后一列是每行的编辑按钮,让用户编辑这一行的信息。还有另一行,第三行,MlsCode。只有当MlsCode的值为“A”或“B”时,我们才应该在此行中显示编辑按钮。下面是表格构建器的一部分:

var agentSearchResultBuilder = 
[
    { colName: "First Name", dataName: "FirstName" },
    { colName: "Last Name", dataName: "LastName" },
    { colName: "MLS", dataName: "MlsCode" }, 
    {
        colName: "MLS Office Status",
        dataName: "Office.MlsIsActive",
        template: '{{if Office.MlsIsActive}}Active{{else}}Inactive{{/if}}',
        styleClass: '{{if Office.MlsIsActive}}active{{else}}inactive{{/if}}'
    },
    {
        colName: "Edit",
        template: "<button title='Edit Agent Information' class='tinyButton editAgent' id='${MlsCode}'>Edit</button>"
    }
];

我编写了以下代码来控制编辑按钮的可见性,但只有第一个匹配的行才能显示该按钮。后面的匹配行没有显示按钮。我不知道出了什么问题。

$("button.editAgent", table).button().hide(); //to hide all buttons initially

$('#agentSearchTable >tbody >tr').each(function () {
            var value = $(this).find('td:eq(2)').text();
            if (value === "A") {
                $("#A").show();
                alert(value);
                 /*I use this to test if it reaches every
                    matching row or not. Turns out yes. Each matching row 
                    gives alert. But edit button didn't show(only first 
                    matching one shows.)
                  */
            }
            if (value === "B") {
                $("#B").show();
                alert(value);
            }
        });

另外,我注意到在agentSearchResultBuilder中,有一些代码,如{if} .. {/ if},所以我想知道有没有办法可以在编辑按钮的模板中执行此操作。就像id等于'A'或'B'一样,显示按钮。我对C#,javascript和jQuery完全不熟悉。这是我的第一个项目。希望你能帮助我,非常感谢!

1 个答案:

答案 0 :(得分:1)

此:

$("#A").show();

不会起作用,因为它取决于在多行按钮上具有相同的id,这不是合法的HTML。浏览器可能忽略了已经看到的ID的id属性。您可能希望使用类而不是ID(将button-${MLSCode}添加到class属性的末尾并删除id属性),并使用以下内容:

$(this).find('.button-a').show();

显示它。