zClip - 如何添加,触发,然后单击一个按钮删除zClip?

时间:2012-10-15 05:34:18

标签: jquery html5 css3 zclip

.zclip()附加到按钮,然后触发它,然后删除.zclip()的最佳方法是什么?这听起来很简单,但我不能让它合作。我有一个带有许多按钮的页面,有些可以直接访问,有些按钮可以通过各种手风琴和标签访问。许多复制目标包含动态数据,其中一些是通过ajax插入的。此外,许多部分都是可折叠的。如果部分关闭时.zclip()附加到按钮的闪光覆盖图存在,则会导致动画出现故障。

我试图通过几种不同的方式来解决这个问题:

附加.zclip()所有按钮元素,然后按设定的间隔刷新页面。虽然它确实捕获了动态数据,但它的性能非常糟糕。

根据.zclip()mouseenter事件以及mouseleavemouseover附加和删除mouseout。以这种方式附加时,所有事件每秒触发多次,导致多个闪光覆盖被绑定到一个按钮。

根据.zclip().hover()附加和删除.hoverIntent()。虽然这种行为比上述尝试更好并且捕获了动态数据,但事件仍然很多。我尝试在父节上执行.hover()并将.zclip()附加到该节中的所有按钮。这有效,但其表现很糟糕。

我确信这有一个简单的解决方案,但我无法弄明白。我可以通过.zclip()绑定.click(),它会附加到按钮上。我可以通过其.zclip()参数删除afterFunction。我无法弄清楚如何将额外的click事件传递给该按钮并在其附加时触发.zclip()。它会工作,但必须单击按钮两次。一旦激活它,一个要开火并将其移除。我想可能需要将额外的click事件发送到闪存覆盖,而不是再次发送到按钮。也许有人可以指出我正确的方向?

zClip Homepage

jsFiddle of this code:

<div id='copy'>Test</div>
<button>Click Here To Copy The Div Above!</button>
<span id='success'>Success!</span>
#copy{
    height: 100px;
    width: 200px;
    padding: 3px;
    margin-bottom: 5px;
    border: 1px solid black;
    border-radius: 6px;
}
#success{
    color: rgba(84,240,84,1);
}
$(document).ready(function() {
    var copySuccessHide = function(){
        $( "#success" ).css({opacity: 0.0, visibility: "visible"});
    };
    copySuccessHide();/*hide the success indicator*/
    var copyData = $("#copy").text();/*get data from copy target*/
    var afterCopyFunction = function(){
        $("#copy").effect( "highlight" , {color : "rgba(230,255,230,1)" }, 1000 )
        $("#success").effect( "pulsate", "fast", copySuccessHide );
        $("button").zclip('remove');/*remove zclip*/
        };

    $("button").click(function () {/*bind zclip to the button on click*/
        $("button").zclip({
                path: "http://www.steamdev.com/zclip/js/ZeroClipboard.swf",
                copy: copyData,
                afterCopy: afterCopyFunction,
                clickAfter: false
            });
    });
});

1 个答案:

答案 0 :(得分:0)

我同意上述所有评论,但有一件事你可能会尝试......

 $("button").click(function () {/*bind zclip to the button on click*/
        $(this).zclip({
                path: "http://www.steamdev.com/zclip/js/ZeroClipboard.swf",
                copy: copyData,
                afterCopy: afterCopyFunction,
                clickAfter: false
            });
    });

使用$(this)....你只是将当前单击的按钮绑定到zclip构造函数。当你使用$(“button”)....每次单击一个按钮时,你就会在页面上的每个按钮上调用zclip构造函数。