【问题标题】:jQuery-UI Button Set Initial IconjQuery-UI 按钮设置初始图标
【发布时间】:2012-01-30 02:12:34
【问题描述】:

我有以下 jQuery 脚本将复选框转换为 jQuery-UI 按钮并设置要显示的图标。单击按钮时,它还会更改图标。一切正常。但是,我似乎无法找到正确的语法来根据复选框的初始选中状态设置初始图标。

function setCheckBoxImages() {
        $(".check-box-image").button({
            icons: { primary: 'ui-icon-check' },
            text: false
        }).change(function () {
            $(this).button("option", {
                icons: { primary: this.checked ? 'ui-icon-check' : '' }
            });
        });
    };

<input class="check-box-image" type="checkbox" checked="@item.IsBusinessHours" id="checkbox1" disabled/><label for="checkbox1"></label>

编辑: 根据下面的意外天才答案,这是我的最终工作标记和脚本:

@Html.CheckBox(@cbMobileId, @item.IsMobile, new { @class = "check-box-image", disabled = "disabled" })<label for="@cbMobileId">    

function setCheckBoxImages() {
        var checkboxes= $(".check-box-image");

        checkboxes.button({
            text: false
        }).change(function () {
            $(this).button("option", {
                icons: { primary: this.checked ? 'ui-icon-check' : 'ui-icon-minus' }
            });
        });

        checkboxes.each(function () {
            $(this).change();
        });
    };

【问题讨论】:

    标签: jquery-ui button checkbox icons


    【解决方案1】:

    您可以遍历所有 jQuery 按钮并为每个按钮调用更改函数。

    【讨论】:

    • 已经把我在上面原始问题中使用的最终脚本。
    【解决方案2】:

    也许你的函数没有被调用。 在你的 javascript 上试试这个

    $(document).ready(function(){
        $(".check-box-image").button({
            icons: { primary: 'ui-icon-check' },
            text: false
        }).change(function () {
            $(this).button("option", {
                icons: { primary: this.checked ? 'ui-icon-check' : '' }
            });
        });
    });
    

    【讨论】:

    • 我已经在 document.ready 函数中调用了这个脚本。
    • 好的,我认为您帖子上的代码没有错误。我将您的代码复制并粘贴到我的 html 文件中,它正在工作。也许您的其他 javascript 代码有错误,因此您的代码无法正常工作。检查一下!
    【解决方案3】:

    你什么时候打电话给setCheckBoxImages()?看不到其余代码很难,但请尝试在 document.ready 上调用它。

    您应该根据复选框的状态设置初始图标:

    function setCheckBoxImages() {
            var check = $(".check-box-image");
            check.button({
                icons: { primary: check.is(':checked') ? 'ui-icon-check' : '' },
                text: false
            }).change(function () {
                $(this).button("option", {
                    icons: { primary: this.checked ? 'ui-icon-check' : '' }
                });
            });
        };
    

    【讨论】:

    • 我在答案中添加了一些代码。我基本上在按钮构造过程中应用了相同的验证。
    • 我刚刚尝试了您的代码,但它对我不起作用。所有“复选框”仍然显示有“ui-icon-check”图标 - 无论它们是否被选中。
    • 我注意到“check”变量包含一个复选框数组(所有与指定类匹配的复选框)。这就是代码不起作用的原因吗?
    • 如果它是一个数组,您需要像在最终编辑中那样循环它。
    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2016-12-23
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多