如何组合我的AJAX脚本和TOGGLE脚本?

时间:2012-06-07 19:56:28

标签: javascript ajax

im a js noob。我有` 有了这个我隐藏的div显示但是ajax没有,第二个ajax工作但直接显示 - 我想在ajax脚本上包含一个click事件但不知道如何:

$(document).ready(function(){
   $(".project-thumbnails a").click(function(event){
    event.preventDefault();
    $('#project-container').slideDown('slow');
    return false;
   });

   $('a.project-close').click(function(event){
    event.preventDefault();
    $('#project-container').slideUp('slow');
    return false;
   });

});

jQuery(document).ready(function($) {

    var $mainContent = $("#project-container"),
        siteUrl = "http://" + top.location.host.toString(),
        url = ''; 

    $(document).delegate("a[href^='"+siteUrl+"']:not([href*=/wp-admin/]):not([href*=/wp-login.php]):not([href$=/feed/])", "click", function() {
        location.hash = this.pathname;
        return false;
    }); 
    $("#searchform").submit(function(event) {
        location.hash = '?s=' + $("#s").val();
        event.preventDefault();
    }); 
    $(window).bind('hashchange', function(){
        url = window.location.hash.substring(1); 
        if (!url) {
            return;
        } 
        url = url + " .entry"; 
        $mainContent.animate({opacity: "0.1"}).html('').load(url, function() {
            $mainContent.animate({opacity: "1"});
        });
    });
    $(window).trigger('hashchange');
});

我怎样才能将这些片段与最终DIV与AJAX打开的片段结合起来,只有在我点击它之后才可以关闭它?

1 个答案:

答案 0 :(得分:1)

第一个解决方案是使用委派事件(.delegate().on()和选择器)。不是在链接上自己注册处理程序,而是将它注册在ajax脚本未覆盖/重新加载/添加的元素上,它也适用于以后添加的元素。

第二个解决方案是执行注册处理程序的函数(不仅仅是)onDOMready,而是onHashchange。此事件由您的ajax脚本触发,以指示存在新内容。然而,使用该解决方案,您需要阻止代码在同一元素上注册两次处理程序,因此您应该使用第一个。