Javascript 使用ZeroClipboard复制zClip库中的文本时出现问题

Javascript 使用ZeroClipboard复制zClip库中的文本时出现问题,javascript,jquery,html,zeroclipboard,zclip,Javascript,Jquery,Html,Zeroclipboard,Zclip,我使用zeroclipboard复制文本时遇到问题。 这是我的html代码: <dl class="codebox"><dt>Code: <a href="#" onclick="selectCode(this); return false;">Select all</a> | <a id="copytxt" href="#" onclick="return false;" class="">Copy to clipboard</

我使用zeroclipboard复制文本时遇到问题。 这是我的html代码:

<dl class="codebox"><dt>Code: <a href="#" onclick="selectCode(this); return false;">Select all</a> | <a id="copytxt" href="#" onclick="return false;" class="">Copy to clipboard</a><div class="zclip" id="zclip-ZeroClipboardMovie_1" style="position: absolute; width: 97px; height: 15px; z-index: 99; left: 196px; top: 1032px; "><embed id="ZeroClipboardMovie_1" src="code/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="97" height="15" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&amp;width=97&amp;height=15" wmode="transparent"></div></dt><dd><code>This is my code that I want to copy</code></dd></dl>
这是复制文本的jQuery代码:

<script type="text/javascript">
$(document).ready(function(){
        $("#copytxt").zclip({
            path: "code/ZeroClipboard.swf",
            copy: function(){return jQuery(".codebox").find(".prettyprint");}
      });
});
</script>
我已经尽了一切努力来解决它。 我还有另一个问题,上面的代码只将zeroclipboard嵌入到具有“copytxt”ID的第一个元素,而不是所有元素

以下是出现问题的地方之一(在我的论坛上): -除去-

我不知道它是否有用,但我正在使用phpBB。 我也在使用zclip:作为零剪贴板


谢谢。

它只附加到一个具有copytxt id的项目的原因是,对于给定id,每页只能有一个元素。id必须是唯一的

它可能没有将任何内容复制到剪贴板,因为
copy:
选项接受一个返回“任何字符串或任何javascript表达式或返回字符串的函数”的函数。函数返回的jQuery对象不是字符串。如果希望从
.prettyprint
元素(示例HTML中未显示)中提取文本,则需要按如下方式提取文本:

 copy: function(){return jQuery(".codebox").find(".prettyprint").text();}
<script type="text/javascript">
$(document).ready(function(){
        $(".copytxt").zclip({
            path: "code/ZeroClipboard.swf",
            copy: function() {
                return jQuery(this).closest(".codebox").find(".prettyprint").text();
            }
      });
});
</script>
如果您希望它在多个位置工作,那么使用类名而不是ID,并使用选择器来获取具有该类名的所有对象

如果希望它获取与单击的链接相关的文本,则需要更改文本检索代码以从与单击的内容相关的对象获取文本

要相对于单击的内容获取它并允许多个操作,您可以将
id=“copytxt”
更改为
class=“copytxt”
,并使用如下代码:

 copy: function(){return jQuery(".codebox").find(".prettyprint").text();}
<script type="text/javascript">
$(document).ready(function(){
        $(".copytxt").zclip({
            path: "code/ZeroClipboard.swf",
            copy: function() {
                return jQuery(this).closest(".codebox").find(".prettyprint").text();
            }
      });
});
</script>

$(文档).ready(函数(){
$(“.copytxt”).zclip({
路径:“code/ZeroClipboard.swf”,
复制:函数(){
返回jQuery(this).closest(“.codebox”).find(“.prettyprint”).text();
}
});
});
添加
jQuery(this).closest(.codebox”)
将在距单击点最近的祖先处开始搜索
.prettyprint
对象。因此,它将沿着发生单击的祖先树,找到父级
codebox
,然后在该代码框中找到
prettyprint


更改为
$(“.copytxt”).zclip
后,它可以返回带有
class=“copytxt”
的所有对象,而不是只返回带有
id=“copytxt”

的一个对象。第一个示例仅适用于第一个复制链接,但我使用.closest()的第二个示例不起作用,你可以访问我在第一篇文章中发布的同一个链接来了解我的意思。编辑:似乎你忘记了在示例中添加.text()和.closest()。我通过在
返回jQuery(this).closest(.codebox”).find(.prettyprint)之后添加.text()来修复它。
您是正确的。我对add.text()进行了更正。很高兴你成功了。请检查我的问题