Clipboard.js 使用 jQuery 动态添加的元素的实现
Clipboard.js implementation on Dynamicly added elements with jQuery
我想知道在使用 jQuery 动态添加内容时如何使用 Clipboard.js 功能。目前我的代码如下,如果页面上的静态加载没有 jQuery:
<div class="snippet"><div id="title">TEXT TO COPY</div></div>
当我使用 jQuery 将其加载为动态添加时,我正在执行以下操作,但该操作不起作用:
var content = '<div class="snippet"><div id="title">TEXT TO COPY</div></div>';
$('#profilesTable').append(content);
我试过:
new Clipboard('.snippet');
加载内容后不起作用,以及 Clipborad.js 页面上提到的高级用法:
new Clipboard('.snippet', {
target: function(trigger) {
return trigger.nextElementSibling;
}
});
这似乎也不起作用。动态添加内容后我错过了什么?
我看过 Understanding non-functioning Clipboard.js implementation with AJAX 但这没有提供答案。
谢谢
我使用动态添加的内容进行了此操作,也许它可以让您深入了解如何解决您的具体实施问题?基本上当我点击按钮时,它会将文本复制到剪贴板。
var body = $('body');
var content = '<div class="snippet"><div id="title">TEXT TO COPY</div></div>';
var btn = '<button class="btn" id="snipButton" data-clipboard-target="#title">Copy to clipboard</button>';
body.append(content);
body.append(btn);
var clipboard = new Clipboard('#snipButton');
这是 jsbin 的 link:http://jsbin.com/jukigakafu/edit?html,js,console,output
感谢大家的信息,
我的实际问题是由于没有使用按钮,我想使用显示在 div 的复制站点上的相同悬停工具提示选项。所以我要做的是通过调用函数在我使用的每个 javascript 文件中加载 jQuery:
var getSnippets = function() {
var a = document.querySelectorAll(".snippet");
[].forEach.call(a, function(a) {
a.firstChild.insertAdjacentHTML("beforebegin", '<button class="btn copy" data-clipboard-snippet><img class="clippy" width="15" src="scripts/plugins/copy/clippy.svg" alt="Copy to clipboard"></button>')
});
var b = new Clipboard("[data-clipboard-snippet]", {
target: function(a) {
return a.nextElementSibling
}
});
b.on("success", function(a) {
a.clearSelection(), showTooltip(a.trigger, "Copied!")
}), b.on("error", function(a) {
showTooltip(a.trigger, fallbackMessage(a.action))
})
};
我想知道在使用 jQuery 动态添加内容时如何使用 Clipboard.js 功能。目前我的代码如下,如果页面上的静态加载没有 jQuery:
<div class="snippet"><div id="title">TEXT TO COPY</div></div>
当我使用 jQuery 将其加载为动态添加时,我正在执行以下操作,但该操作不起作用:
var content = '<div class="snippet"><div id="title">TEXT TO COPY</div></div>';
$('#profilesTable').append(content);
我试过:
new Clipboard('.snippet');
加载内容后不起作用,以及 Clipborad.js 页面上提到的高级用法:
new Clipboard('.snippet', {
target: function(trigger) {
return trigger.nextElementSibling;
}
});
这似乎也不起作用。动态添加内容后我错过了什么?
我看过 Understanding non-functioning Clipboard.js implementation with AJAX 但这没有提供答案。
谢谢
我使用动态添加的内容进行了此操作,也许它可以让您深入了解如何解决您的具体实施问题?基本上当我点击按钮时,它会将文本复制到剪贴板。
var body = $('body');
var content = '<div class="snippet"><div id="title">TEXT TO COPY</div></div>';
var btn = '<button class="btn" id="snipButton" data-clipboard-target="#title">Copy to clipboard</button>';
body.append(content);
body.append(btn);
var clipboard = new Clipboard('#snipButton');
这是 jsbin 的 link:http://jsbin.com/jukigakafu/edit?html,js,console,output
感谢大家的信息,
我的实际问题是由于没有使用按钮,我想使用显示在 div 的复制站点上的相同悬停工具提示选项。所以我要做的是通过调用函数在我使用的每个 javascript 文件中加载 jQuery:
var getSnippets = function() {
var a = document.querySelectorAll(".snippet");
[].forEach.call(a, function(a) {
a.firstChild.insertAdjacentHTML("beforebegin", '<button class="btn copy" data-clipboard-snippet><img class="clippy" width="15" src="scripts/plugins/copy/clippy.svg" alt="Copy to clipboard"></button>')
});
var b = new Clipboard("[data-clipboard-snippet]", {
target: function(a) {
return a.nextElementSibling
}
});
b.on("success", function(a) {
a.clearSelection(), showTooltip(a.trigger, "Copied!")
}), b.on("error", function(a) {
showTooltip(a.trigger, fallbackMessage(a.action))
})
};