Jquery发出回调函数

时间:2013-04-03 15:57:51

标签: jquery callback

我创建了一个自定义脚本,允许使用ajax(ajax html内容加载器)加载html内容。 此元素在元素单击时启动。

此脚本可以在点击时使用硬编码元素。

然而,在我的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();
});

对不起我的英文,我是法国人

卢瓦克

1 个答案:

答案 0 :(得分:2)

(快速阅读你的问题,必须尽快离开。抱歉,如果偏离主题):

也许你应该尝试:

$(document).on("click",'.link:not("#prev-ajax,#next-ajax")',function (e) {

而不是

$('.link:not("#prev-ajax,#next-ajax")').on("click",function (e) {

你的英语非常好(从法国的角度来看; - )