.zclip()附加到按钮,然后启动它,然后删除.zclip()的最佳方法是什么?听起来很简单,但我不能让它配合。我有一个页面有许多按钮,一些直接访问,一些按钮是通过各种手风琴和标签访问。许多复制目标包含动态数据,其中一些是通过ajax插入的。还有许多部分是可折叠的。如果在节关闭时,.zclip()附加到按钮的flash覆盖出现,则会导致动画出现故障。
我试着从几个不同的角度来处理这个问题:
附加所有按钮元素,然后按设置的间隔刷新页面。虽然它确实捕获了动态数据,但其性能非常糟糕。
根据.zclip().zclip()事件以及mouseentermouseleave附加和移除mouseover。以这种方式连接时,所有事件每秒都会多次触发,导致多个闪存覆盖绑定到一个按钮。
基于mouseout.zclip()附加和移除.hover()。虽然这比上面的尝试表现得更好,并捕获动态数据,但事件仍然会触发。我试过在父节上执行.hoverIntent()并将.hover()附加到该节中的所有按钮。这很有效,但它的表现很糟糕。
我相信有一个简单的解决办法,但我就是想不出来。我可以通过.zclip()绑定.zclip(),它将附加到一个按钮上。我可以通过它的.click()参数删除.zclip()。我不知道如何将一个附加的afterFunction事件传递给按钮,并在其附加后触发click。它会起作用的,但是这个按钮必须被点击两次。一旦激活它,它就会开火并移除它。我在想,可能需要将附加的.zclip()事件发送到flash overlay,而不是再次发送到按钮。也许有人能指点我正确的方向?
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
            });
    });
});

最佳答案

我同意上面所有的评论,但有一件事你可以试试…

 $("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构造函数。

09-25 16:51