Zclip Open仅从下一个元素中单击了类/副本

时间:2014-10-20 11:33:19

标签: javascript jquery button copy zclip

我已经意识到我在JS / jQuery上几十年来没有使用过它。

我正在使用jQuery Zclip复制列表中的文字。但我发现它首先只适用于每页一个元素。我找到了一个解决方案,为每个列表项使用不同的ID,但这将在未来创建大量不必要的工作,因为会有大量的按钮。

我需要的是一个函数,它在按钮元素之后检查span元素并从中获取内容,而不是从特定ID中获取内容。我怎样才能通过jquery实现这个目标?

这是我的HTML / JS

<li><span class="server-name">SERVER NAME</span>
    <br><button class="copy">COPY</button>IP:<span class="server-ip">127.0.0.1</span>
</li>

jquery的

$(document).ready(function () {
    $('button.copy').zclip({
        path: 'scripts/ZeroClipboard.swf',
        copy: $('span.description').text()
  });

我希望你理解我的问题。

4 个答案:

答案 0 :(得分:4)

看起来copy参数可以是一个函数。如果在当前按钮的上下文中调用它(并且看起来像是这样),那么下一个代码应该可以正常工作:

$('button.copy').zclip({
    path: 'scripts/ZeroClipboard.swf',
    copy: function() {
        return $(this).next('.server-ip').text();
    }
});

答案 1 :(得分:3)

为您的li提供课程(类似info

<li class="info">
    <span class="server-name">SERVER NAME</span>
    <button class="copy">COPY</button>
    IP:<span class="server-ip">127.0.0.1</span>
</li>

在你的JS中:

$(document).ready(function () {
    // loop through all `.info` elements
    $('.info').each(function () {
        // get the button
        var $button = $(this).find('.copy');

        // get the ip element
        var $ip = $(this).find('.server-ip');

        // make button zclip
        $button.zclip({
            path: 'scripts/ZeroClipboard.swf',

            // the text of ip
            copy: $ip.text()
        });
    });
});

答案 2 :(得分:3)

你需要使用像

这样的副本
$('button.copy').zclip({
    path: 'scripts/ZeroClipboard.swf',
    copy: function() {
        return $(this).next('.server-ip').text(); //this here refers to element which invoked zclip
    }
});

您可以浏览source code

o.bind('zClip_copy',settings.copy);

答案 3 :(得分:0)

我不知道zclip,但你需要从按钮后面的下一个元素中选择文字,所以第四行应该是:

copy: $(this).next('.server-ip').text()