【问题标题】:jQuery Dialog - Modification on an Array of ButtonsjQuery 对话框 - 修改按钮数组
【发布时间】:2013-01-24 17:55:19
【问题描述】:

我有一个函数可以创建一个充满按钮的对话框,其名称来自一个按钮数组。请参阅此帖子here

我想做的是修改这个函数,以便我可以将样式应用于生成的按钮数组。这样……

function setAutoDialog(){
    var testArray = ["T1", "T2"];

    var testFunction = function () {
        alert("worked");
    }

    var myButtons = {};

    for(var i = 0; i < testArray.length; i++){
        myButtons[testArray[i]] = testFunction;
    }
    for(var i = 0; i < testArray.length; i++){
        myButtons[i].css('background','black');
    }

    $('#autoDialog').dialog({
        autoOpen: false,
        width: 'auto',
        buttons : myButtons
    }); 
}

正如你们中的一些人可能建议的那样,我只是不能将类应用于按钮,因为颜色将由用户设置,或者来自一组有序颜色以匹配所述按钮。对此的任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery jquery-ui button jquery-dialog


    【解决方案1】:

    你将不得不稍微捏造一下。

    使用此标记:

    <div id="autoDialog">howdy</div>
    

    您可以创建一组颜色和类名,然后应用它们:

    我稍微改变了你的程序,并添加了一些警报,所以你看到已经添加了类:(这是一个 jQuery 1.9 版本,测试了类属性的警报) - 基本上我创建了一个动态样式元素和应用它。我在样式中添加了足以覆盖现有样式的内容 - 确保它是一个 hack 但应该可以工作。 实践示例:http://jsfiddle.net/Q4qT3/1/

    function setAutoDialog() {
        var testArray = ["T1", "T2"];
        var myClass = [{
            myclass: "primary",
            color: "#558899"
        }, {
            myclass: "secondary",
            color: "pink"
        }];
        var testFunction = function (e) {
            alert("worked2");
            alert($(e.target).prop("class"));
        };
    
        var myButtons = [];
        var i = 0;
        for (i = 0; i < testArray.length; i++) {
            myButtons[i] = {
                text: testArray[i],
                click: testFunction,
                myclass: myClass[i].myclass
            };
        }
        var myStyle = "<style type='text/css'> ";
        for (i = 0; i < testArray.length; i++) {
            myStyle += " .ui-dialog-buttonset ." ;
            myStyle += myClass[i].myclass;
            myStyle += " span.ui-button-text {background:";
            myStyle += myClass[i].color + ";}";
        }
        myStyle += "< /style > ";
        $(myStyle).appendTo("head");
    
        $('#autoDialog').dialog({
            autoOpen: false,
            width: 'auto',
            buttons: myButtons,
            create: function (event, ui) {
                //         Get the dialog
                var dialog = $(event.target).parents(".ui-dialog.ui-widget");
                var buttons = dialog.find(".ui-dialog-buttonpane").find("button");
                for (var i = 0; i < buttons.length; i++) {
                    $(buttons[i]).addClass($(buttons[i]).attr("myclass"));
                }
            }
        });
        $('#autoDialog').dialog("open");
    }
    setAutoDialog();
    

    【讨论】:

    • 注意:这非常冗长,但说明了重点。我将留下重构以使其更短于 OP
    猜你喜欢
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多