0

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

$(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 仅在我单击它之后才打开的片段结合起来,并且是否可以关闭它?

4

1 回答 1

1

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

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

于 2012-06-08T10:41:58.160 回答