javascript - 如何放置选择元素和切换按钮以释放 jqgrid 工具栏

标签 javascript jquery css jqgrid free-jqgrid

如果使用超赞字体图标集,我正在寻找一种方法来放置选择元素和切换按钮以释放 jqgrid 顶部工具栏。 我尝试了在 4.6 中工作的代码:

    var i,
        selectElem= '<select tabindex="-1" id="_layout">';

    for (i=0; i<10; i++) {
        selectElem += '<option value="'+i+'" ';
        if (i==layout)
            selectElem += ' selected';
        selectElem += '>Form ' + i + '</option>'
    }

    $("#grid_toppager_left table.navtable tbody tr").append(
           '<td class="ui-pg-button ui-corner-all">' +
           '<div class="ui-pg-div my-nav-checkbox">' +
           selectElem +
           '</select>' +
           '</div></td>'
           );

但是选择元素没有出现。

对于切换按钮我试过了

    $("#grid_toppager_left table.navtable tbody tr").append(
           '<td class="ui-pg-button ui-corner-all">' +
               '<div class="ui-pg-div my-nav-checkbox">' +
               '<input tabindex="-1" type="checkbox" id="AutoEdit" ' + (autoedit ? 'checked ' : '')+'/>' +
               '<label ' +' for="AutoEdit">Toggle</label></div></td>'
                      );
    $("#AutoEdit").button({
        text: false,
        icons: {primary: "fa-star"}
    }).click(function () {
            autoedit = !autoedit;
        }
    });

但是切换按钮也没有出现在工具栏中。 如何强制显示这些元素?

最佳答案

您应该更改,因为 .navtable 现在不是表格。参见 the wiki article更多细节。所以代码应该像下面这样:

$("#grid_toppager_left .navtable").append(
 '<div class="ui-pg-button ui-corner-all">' +
     '<div class="ui-pg-div my-nav-checkbox">' +
     '<input tabindex="-1" type="checkbox" id="AutoEdit" ' + (autoedit ? 'checked ' : '')+'/>' +
     '<label ' +' for="AutoEdit">Toggle</label></div></div>'
            );
$("#AutoEdit").button({
    text: false,
    icons: {primary: "fa fa-lg fa-fw fa-star"}
}).click(function () {
        autoedit = !autoedit;
    }
);
var $label = $("#AutoEdit").next("label");
$label.children(".ui-button-icon-primary").removeClass("ui-icon");
$label.find(".ui-button-text").hide();

另外我添加了小的 CSS 修复

.my-nav-checkbox > .ui-button-icon-only { margin-top: 5px; }
.my-nav-checkbox > .ui-button-icon-only > .ui-button-icon-primary.fa { margin-left: 6px; }
.my-nav-checkbox:hover  { margin: 1px;  }

The demo显示结果:

enter image description here

更新:我虽然对您的问题有更多了解,但我可以建议更好地解决同一问题。我认为根本不使用 jQuery UI Button 会更容易。而不是那个可以通过切换 ui-state-active 类将按钮标记为“已选中”。所以我建议添加 CSS 规则

.ui-jqgrid .ui-pg-table .ui-pg-button.ui-state-active { margin: 1px; }

首先。可以使用 navButtonAdd 方法实现选中按钮:

var autoedit = false;
$grid.jqGrid("navButtonAdd", "#grid_toppager", {
    buttonicon: "fa-star",
    caption: "",
    id: "AutoEdit",
    title: "Toggle autoedit",
    onClickButton: function (options, e) {
        autoedit = !autoedit;
        //$("#"+options.id)[autoedit ? "addClass" : "removeClass"]("ui-state-active");
        $(e.currentTarget)[autoedit ? "addClass" : "removeClass"]("ui-state-active");
    }
});

The corresponding demo似乎没有任何副作用,而且非常简单。 “选中”按钮的显示结果如下图所示:

enter image description here

关于javascript - 如何放置选择元素和切换按钮以释放 jqgrid 工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28972507/

相关文章:

javascript - 使用 bootstrap 在另一个页面上设置事件幻灯片

javascript - 浏览器后退/窗口关闭触发的消息窗口

javascript - 使用 Javascript,我如何判断 DOM 元素的字体大小是以 px、em 还是 rem 定义的?

javascript - ng-bind 发生在我的指令之后,所以我没有值(value)

javascript - node.js 产生。退出事件立即触发

javascript - 单击时更改类内图像的源无法设置未定义的属性 'src'

javascript - JQuery 或 JavaScript 在页面问题上将文本替换为/图像背景

jquery - 一段时间后重新加载当前功能,无需重新加载页面

css - 复选框在 mac chrome 中没有样式

css - Wordpress 中的 Bootstrap 3 菜单