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打开的片段结合起来,只有在我点击它之后才可以关闭它?
答案 0 :(得分:1)
第一个解决方案是使用委派事件(.delegate()
或.on()
和选择器)。不是在链接上自己注册处理程序,而是将它注册在ajax脚本未覆盖/重新加载/添加的元素上,它也适用于以后添加的元素。
第二个解决方案是执行注册处理程序的函数(不仅仅是)onDOMready,而是onHashchange。此事件由您的ajax脚本触发,以指示存在新内容。然而,使用该解决方案,您需要阻止代码在同一元素上注册两次处理程序,因此您应该使用第一个。