【问题标题】:Using zClip on click event of a jQuery UI Dialog button在 jQuery UI 对话框按钮的单击事件上使用 zClip
【发布时间】:2011-07-11 04:21:18
【问题描述】:

我想在 jQuery UI 对话框按钮中使用 jQuery zClip 插件,但我不知道如何适应这种情况。谁能帮帮我?

提前谢谢你!

    $.ajax({
        url: '/music/lyrics/' + hash,
        success: function (data) {
            data = jQuery.parseJSON(data);
            $('#dialog-modal').html(data.lyrics);
            $('#dialog:ui-dialog').dialog('destroy');
            $('#dialog-modal').dialog({
                modal: true,
                resizable: false,
                title: 'Lyric: ' + data.song,
                width: 500,
                height: 400,
                buttons: {
                    'Copy' : function () {
                         // use zClip to copy $('#dialog-modal').text() here
                     }
                }
            });
        },
        error: function (msg) {
            alert(msg);
        }
    });

【问题讨论】:

    标签: jquery-ui jquery-plugins zclip


    【解决方案1】:

    我会忽略对话框按钮处理动作的正常方式,并单独使用 zClip 处理动作的方式。像这样的:

    $.ajax({
            url: '/music/lyrics/' + hash,
            success: function (data) {
                data = jQuery.parseJSON(data);
                $('#dialog-modal').html(data.lyrics);
                $('#dialog:ui-dialog').dialog('destroy');
                $('#dialog-modal').dialog({
                    modal: true,
                    resizable: false,
                    title: 'Lyric: ' + data.song,
                    width: 500,
                    height: 400,
                    buttons: {
                        'Copy' : function () { return true; }
                    }
                });
                $('#dialog-modal ui-button:contains(Copy)').zclip({
                    path:'../whatever/ZeroClipboard.swf',
                    copy:$('#dialog-modal').text()
                });
            },
            error: function (msg) {
                alert(msg);
            }
        });
    

    【讨论】:

      【解决方案2】:

      假设你使用的是 jQuery 1.8+,你可以用不同的方式指定你的按钮来给它们添加 ID:

      $("#mydialog").dialog({
        ...
        buttons : [{
          text: "Close",
          click: function() {
            $(this).dialog("close");
          }
        },{
          text: "Copy to clipboard",
          id: "copyButton", // here is your ID
          click : function() {
            alert("Sorry, copy not supported in your browser, please copy manually.");
          }
        }]
        ...
      });
      
      //after .dialog("open");
      $("#copyButton").zclip({
        ...
        clickAfter: false // dont propagate click: will suppress unsupported warning
        ...
      });
      

      我唯一的问题是你似乎只能在可见按钮上安装 zclip,所以我在处理程序中为打开对话框的按钮调用 zclip()

      【讨论】:

      • 谢谢,这很有帮助(在我意识到我是在 document.ready 上绑定 zclip 而不是在打开对话框时)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多