$(window).在$(document)之后加载.ajaxComplete



我有一个在页面加载时正常工作的函数:

$(window).on("load", function() {
OnloadFunction();
});

尽管当我通过ajax重新运行查询并加载新内容时,OnloadFunction不起作用。

$('.submenu li').click(function(e) {
e.preventDefault();
var sortSelect = $(this).find('div').text();
var categorySelect = $(this).parent().attr('class').replace('submenu ', '');
$('.all-songs').html('<h2 class="result">Loading...</h2>');
$.ajax({
type: 'post',
dataType: 'text',
url: sortAjax.ajaxurl,
data: {
action: 'my_ajax_sort',
categorySelect: categorySelect,
sortSelect: sortSelect
},
success: function(response) {
$('.all-songs').html(response);
}
})
});
$(window).on("load", function() {
OnloadFunction();
$(document).ajaxComplete(function() {
OnloadFunction();
});
});

$(document).ready(function() {
$(document).ajaxComplete(function() {
OnloadFunction();
});
});

ajax更新的Html在这里:

$(document).ready(function(){
$(document).ajaxComplete(function(){
xxxxxx
});
});

以下是需要运行的功能:

function OnloadFunction () {
$('.sc-trackslist li').each(function() {
var trackNum = $(this).index();
var top = trackNum * 50 + trackNum * 1;
$(this).css('top', top);
});
$('.sc-trackslist > li').click(function () {
if ($('.sc-play').hasClass('clicked') || $('.sc-pause').hasClass('clicked')) {
} else {
$('.sc-play').addClass('hidden');
$('.sc-pause').removeClass('hidden');
$('.sc-player .sc-info, .sc-player .sc-scrubber, .sc-player .sc-controls').slideDown(200);
$('#footer').css('margin-bottom', '90px');
}
});
$('.sc-trackslist > li').hover(function() {
var trackNum = $(this).index() + 1;
$('.song:nth-of-type('+trackNum+')').addClass('hover');
}, function() {
var trackNum = $(this).index() + 1;
$('.song:nth-of-type('+trackNum+')').removeClass('hover');
});
}

欢迎提出任何建议,谢谢您的回复!

根据您的评论:

OnloadFunction((正在运行,但运行得太早-在html之前已更新

因此,我建议在html更新后,将OnloadFunction()的调用放在AJAX请求的success回调中,如下所示:

success: function(response) {
$('.all-songs').html(response);
OnloadFunction();
}

找到了一个解决方案-该函数需要在ajaxComplete中的其他代码之后运行,而不是在单独的ajaxComplete函数中运行

$(document).ready(function(){
$(document).ajaxComplete(function(){
xxxxxx
OnloadFunction();
});
});