触发器 clipboard.js 父级
Trigger clipboard.js parent
我正在使用网站的 Clipboard.js
插件,但在单击时遇到了仅选择 .copy
按钮的父级 class 的问题。
问题是我想用富文本格式复制 pre
标签内的代码,而我使用的方法做得很好 (return document.querySelector("myClass")
),但是当我更改前面的代码与我在类似问题中找到的代码 (return $(trigger).closest(".fw-code-copy").next("code").text();
) 我可以复制每个块的代码但丢失格式,我的意思是代码被复制为纯文本。
能否请您查看我的代码并建议如何找到按钮父级的 class?
HTML
<div class="code-snippet">
<pre class="code">
<div>
some code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>
<div class="code-snippet">
<pre class="code">
<div>
some other code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>
CSS
.code-snippet{
position: relative;
width: 100%;
bordeR: 1px solid red;
margin-bottom: 20px;
}
.copy{
position: absolute;
right: 20px;
bottom: 20px;
}
JS
$(document).ready(function(){
var clipboard = new Clipboard('.copy', {
target: function() {
return document.querySelector('.code');
}
});
});
您可以使用 jQuery .closest()
通过选择器从祖先获取第一个元素:
$(document).ready(function(){
var clipboard = new Clipboard('.copy', {
target: function(trigger) {
return $(trigger).closest('.code-snippet').find('.code').get(0);
}
});
});
.code-snippet {
position: relative;
width: 100%;
border: 1px solid red;
margin-bottom: 20px;
}
.copy {
position: absolute;
right: 20px;
bottom: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/clipboard.js/1.5.5/clipboard.min.js"></script>
<div class="code-snippet">
<pre class="code">
<div>
some code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>
<div class="code-snippet">
<pre class="code">
<div>
some other code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>
我认为这应该可行。您甚至不需要 jQuery 在目标函数中:
$(document).ready(function(){
var clipboard = new Clipboard('.copy', {
target: function(trigger) {
return trigger.previousElementSibling;
}
});
});
片段:
$(document).ready(function() {
var clipboard = new Clipboard('.copy', {
target: function(trigger) {
return trigger.previousElementSibling;
}
});
});
.code-snippet {
position: relative;
width: 100%;
bordeR: 1px solid red;
margin-bottom: 20px;
}
.copy {
position: absolute;
right: 20px;
bottom: 20px;
}
.code {
color: purple;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.5/clipboard.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="code-snippet">
<pre class="code">
<div>
some code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>
<div class="code-snippet">
<pre class="code">
<div>
some other code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>
我正在使用网站的 Clipboard.js
插件,但在单击时遇到了仅选择 .copy
按钮的父级 class 的问题。
问题是我想用富文本格式复制 pre
标签内的代码,而我使用的方法做得很好 (return document.querySelector("myClass")
),但是当我更改前面的代码与我在类似问题中找到的代码 (return $(trigger).closest(".fw-code-copy").next("code").text();
) 我可以复制每个块的代码但丢失格式,我的意思是代码被复制为纯文本。
能否请您查看我的代码并建议如何找到按钮父级的 class?
HTML
<div class="code-snippet">
<pre class="code">
<div>
some code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>
<div class="code-snippet">
<pre class="code">
<div>
some other code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>
CSS
.code-snippet{
position: relative;
width: 100%;
bordeR: 1px solid red;
margin-bottom: 20px;
}
.copy{
position: absolute;
right: 20px;
bottom: 20px;
}
JS
$(document).ready(function(){
var clipboard = new Clipboard('.copy', {
target: function() {
return document.querySelector('.code');
}
});
});
您可以使用 jQuery .closest()
通过选择器从祖先获取第一个元素:
$(document).ready(function(){
var clipboard = new Clipboard('.copy', {
target: function(trigger) {
return $(trigger).closest('.code-snippet').find('.code').get(0);
}
});
});
.code-snippet {
position: relative;
width: 100%;
border: 1px solid red;
margin-bottom: 20px;
}
.copy {
position: absolute;
right: 20px;
bottom: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/clipboard.js/1.5.5/clipboard.min.js"></script>
<div class="code-snippet">
<pre class="code">
<div>
some code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>
<div class="code-snippet">
<pre class="code">
<div>
some other code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>
我认为这应该可行。您甚至不需要 jQuery 在目标函数中:
$(document).ready(function(){
var clipboard = new Clipboard('.copy', {
target: function(trigger) {
return trigger.previousElementSibling;
}
});
});
片段:
$(document).ready(function() {
var clipboard = new Clipboard('.copy', {
target: function(trigger) {
return trigger.previousElementSibling;
}
});
});
.code-snippet {
position: relative;
width: 100%;
bordeR: 1px solid red;
margin-bottom: 20px;
}
.copy {
position: absolute;
right: 20px;
bottom: 20px;
}
.code {
color: purple;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.5/clipboard.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="code-snippet">
<pre class="code">
<div>
some code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>
<div class="code-snippet">
<pre class="code">
<div>
some other code
</div>
</pre>
<input class="copy" type="button" value="copy">
</div>