我有以下代码:
document.addEventListener('DOMContentLoaded', function PostLinkHome() {
jQuery(function($) {
$('.post-link-home').find('.elementor-post').each(function() {
let link = $(this).find('a').attr('href');
$(this).wrapAll(document.createElement('a'));
$(this).closest('a').attr('href', link);
});
jQuery(document).ajaxComplete(function() {
PostLinkHome();
});
});
});
假设它运行jquery函数 PostLinkHome()
加载ajax之前和之后。
我尝试过这样做:
jQuery(document).bind('ready ajaxComplete', function($) {
$('.post-link-home').find('.elementor-post').each(function() {
let link = $(this).find('a').attr('href');
$(this).wrapAll(document.createElement('a'));
$(this).closest('a').attr('href', link);
});
});
来源
但这不起作用。
问题是,代码可以工作,但一旦加载ajax,它就会再次加载jquery,加载到循环中的前面的项,这些项在ajax加载更多内容之前已经应用了函数。
这会导致ajax项应用jquery,但页面上的旧项会两次应用相同的脚本,这是一个问题。
1条答案
按热度按时间rks48beu1#
只需定义要在函数中运行的代码。在documentready上调用它,并将其绑定到ajax调用(旁注:似乎很奇怪,您会在每次ajax调用中运行此代码,而不仅仅是在返回内容的调用中运行此代码)
看起来很奇怪,因为这个代码会把一个链接放到一个链接中?我猜你会想要打开初始链接。