gpt4 book ai didi

javascript - 使用 jQuery load/Ajax 功能后将 Clipboard JS 事件绑定(bind)到按钮

转载 作者:行者123 更新时间:2023-12-03 22:51:20 24 4
gpt4 key购买 nike

我正在使用 ClipboardJS 库通过 data-clipboard-text 属性复制附加到按钮的文本。我还使用 jQuery 的 .load() 函数来动态提取 HTML 内容。此内容包括复制文本按钮的副本。当使用 jQuery 加载“新鲜”按钮时,这些按钮不再有绑定(bind)的事件。我在下面附上了我当前的工作代码。

有没有办法在加载动态内容后将事件重新绑定(bind)到按钮?最好使用普通的 JS 解决方案。

jQuery加载函数

jQuery(document).ready(function(e) {    
// AJAX .load function for sendout post content
e( ".sendout-link" ).click(function() {
var post_url = e( this ).attr( "href" );
e( "#sendout-container" ).html( '<div class="loading">Loading...</div>' );
e( "#sendout-container" ).load( post_url, function( response, status, xhr ) {
if ( status == "error" ) {
var msg = "Sorry but there was an error: ";
e( "#sendout-container" ).html( msg + xhr.status + " " + xhr.statusText );
}
});
return false;
});
});

ClipboardJS代码

var btns = document.querySelectorAll('.copy-button');
var clipboard = new ClipboardJS(btns);
clipboard.on('success', function(e) {
e.trigger.textContent = 'URL Copied';
e.trigger.setAttribute('disabled', true);
window.setTimeout(function() {
e.trigger.textContent = 'Copy URL';
e.trigger.removeAttribute('disabled');
}, 5000);
});
clipboard.on('error', function(e) {
console.error('Action:', e.action);
console.error('Trigger:', e.trigger);
});

最佳答案

您可以在动态 load() 过程中绑定(bind)事件。

function bindCopy(){
var btns = document.querySelectorAll('.copy-button');
var clipboard = new ClipboardJS(btns);
clipboard.on('success', function(e) {
e.trigger.textContent = 'URL Copied';
e.trigger.setAttribute('disabled', true);
window.setTimeout(function() {
e.trigger.textContent = 'Copy URL';
e.trigger.removeAttribute('disabled');
}, 5000);
});
clipboard.on('error', function(e) {
console.error('Action:', e.action);
console.error('Trigger:', e.trigger);
});
}

jQuery(document).ready(function(e) {
// AJAX .load function for sendout post content
e( ".sendout-link" ).click(function() {
var post_url = e( this ).attr( "href" );
e( "#sendout-container" ).html( '<div class="loading">Loading...</div>' );
e( "#sendout-container" ).load( post_url, function( response, status, xhr ) {
if ( status == "error" ) {
var msg = "Sorry but there was an error: ";
e( "#sendout-container" ).html( msg + xhr.status + " " + xhr.statusText );
}else{
bindCopy(); //each time content is loaded
}
});
return false;
});
bindCopy(); //first time
});

关于javascript - 使用 jQuery load/Ajax 功能后将 Clipboard JS 事件绑定(bind)到按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59297282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com