2

2 つpreのブロックがあり、それぞれが div でラップされ、コピー ボタンがあります。

<div class="code">
    <a class="copy">copy</a>
    <pre>content of 1st pre</pre>
</div>

<div class="code">
    <a class="copy">copy</a>
    <pre>content of 2nd pre</pre>
</div>
$('.code').on('mouseenter', function() {
    var copy_button = $(this).find('.copy');
    var clip = new ZeroClipboard(copy_button, {moviePath: 'ZeroClipboard.swf'});
    var content = $(this).find('pre').text();

    // at this point, content is always right
    // alert(content);

    clip.on('mousedown', function(client, args) {
        // the content doesn't get updated here
        alert(content);

        clip.setText(content);
    });
});

問題は、常にのコンテンツをコピーしているように見えることですfirst-mouseentered-div

マウスでdiv2firstに入り、コピーをクリックすると、コンテンツ ( content of 2nd pre) が正常にコピーされます。しかし、最初のプレをコピーしようとすると、コンテンツは更新されず、まだcontent of 2nd pre.

ここで何が間違っていますか?どうすればこれを修正できますか?

4

2 に答える 2

0

OK、別のjQueryプラグインを見つけました- 。zClipを使用して構築されていZero Clipboard libraryます。使用と構成がはるかに簡単です。

$('.copy').zclip({
    path: 'ZeroClipboard.swf',
    copy: function() {
        var tocopy = $(this).parent().find('pre').text();
        // formatting content
        // ...
        return tocopy;
    },
    beforeCopy:function(){
        // do something before copy
    },
    afterCopy:function(){
        // do something after copy
    }
});
于 2013-01-28T16:22:09.543 に答える
0

マウス入力でイベントをどんどん追加していきます。これによりイベントのバインドが解除されるため、毎回追加する必要はありません。

.on('mouseout', function(){
    $(this).unbind();
});
于 2013-01-28T16:27:11.863 に答える