我創建了一個自定義腳本,允許使用ajax(ajax html內容加載器)加載html內容。 此腳本在元素單擊時執行。Jquery調用回調函數
此腳本在單擊時與硬編碼元素一起工作良好。
但是,在我的html中,我添加了很多元素感謝點擊。
這個新添加的元素無法通過我的ajax html內容加載器加載內容。
我需要回調我的ajax腳本,以使其在新的附加元素上工作。
我不知道如何編寫我的腳本才能進行回調。
這裏我的腳本:
$(function ajax() {
function ajaxify(file) {
$.get(file, function (data) {
var folderContent = $("#bottom-container");
$("#prev-ajax").fadeOut(0);
$("#next-ajax").fadeOut(0);
folderContent.slideToggle(1000,"easeOutCirc", function() {;
$("#loading-bloc").show();
$("#loading-text").fadeIn(500);
$("#ajaxify_container").hide(function() {
$("#loading-bloc").everyTime(10, function(){
$("#loading-bloc").animate({left:"100%"}, 1000).animate({left:"0%"}, 1000);
});
$("#ajaxify_container").show(function() {
folderContent.slideToggle(1000,"easeOutCirc");
$("#loading-bloc").hide();
$("#loading-text").fadeOut(500);
$("#prev-ajax").fadeIn(300);
$("#next-ajax").fadeIn(300);
});
});
});
});
}
$('.link:not("#prev-ajax,#next-ajax")').on("click",function (e) {
e.preventDefault();
var functionAlink = $(this);
var functionBlink = $(this);
var $parent= functionAlink.parents('.element');
var prev = $parent.prev().find('.link').attr('href');
var next = $parent.next().find('.link').attr('href');
if (typeof prev != 'undefined') {
$("#prev-ajax").attr('href', prev);
$("#prev-ajax").animate({opacity: 1}, 300);
}else {
$("#prev-ajax").removeAttr("href");
$("#prev-ajax").animate({opacity: 0.4}, 300);
}
if (typeof next != 'undefined') {
$("#next-ajax").attr('href', next);
$("#next-ajax").animate({opacity: 1}, 300);
}else {
$("#next-ajax").removeAttr("href");
$("#next-ajax").animate({opacity: 0.4}, 300);
}
var link = functionBlink;
if (!link.hasClass('current')) {
$('.link').removeClass('current');
link.addClass('current');
ajaxify(link.attr('href'));
window.location.hash = link.attr("href");
}
return false;
});
$("#prev-ajax,#next-ajax").on("click",function (e) {
e.preventDefault();
var functionAlink = $(this);
var functionBlink = $(this);
//$("#prev-ajax").fadeOut(0);
//$("#next-ajax").fadeOut(0);
ajaxify(functionAlink.attr('href'));
window.location.hash = functionAlink.attr("href");
$('.link').removeClass('current');
var href = functionBlink.attr('href');
var link = $(".link[href*= '" + href + "']:not(#prev-ajax, #next-ajax)");
link.addClass('current');
var $parent = link.parents('.element');
var prev = $parent.prev().find('.link').attr('href');
var next = $parent.next().find('.link').attr('href');
if (typeof prev != 'undefined') {
$("#prev-ajax").attr('href', prev);
$("#prev-ajax").animate({opacity: 1}, 300);
}else {
$("#prev-ajax").removeAttr("href");
$("#prev-ajax").animate({opacity: 0.4}, 300);
}
if (typeof next != 'undefined') {
$("#next-ajax").attr('href', next);
$("#next-ajax").animate({opacity: 1}, 300);
}else {
$("#next-ajax").removeAttr("href");
$("#next-ajax").animate({opacity: 0.4}, 300);
}
});
});
$(function(){
$(window).hashchange(function(){
var hash = window.location.hash;
var hash = location.hash.replace("#","");
if(window.location.hash) {
$.get(hash, function (data) {
$('#LoadingImage').show();
$("#ajaxify_container").fadeOut(1500, function() {
$(this).html(data).fadeIn(1500, function() {
$('#LoadingImage').hide();
});
});
});
} else {
// Fragment doesn't exist
}
})
$(window).hashchange();
});
對不起,我的英語,我是法國人
盧瓦克
很難知道你要問什麼,但你已經使用'$回調.get'來追加元素,所以我猜測問題是事件處理程序不能與動態內容一起工作,並且你必須使用'on()'的委託版本。您可以閱讀jQuery文檔,在那裏很好地解釋它,或者搜索SO上的委派事件處理程序。 – adeneo
謝謝你的回答。我已經在我的代碼中添加了click函數中的'.on'。這是點擊功能,不適用於附加元素... – lolo