jQUERY:没有发生任何事情。单击(function())我哪里出错了?

jQUERY:没有发生任何事情。单击(function())我哪里出错了?,jquery,Jquery,在这里我还在学习jquery,我试着设置一组div,它们先扩展然后关闭,但是在关闭时什么也没有发生。有人能解释一下我做错了什么吗 谢谢!您的.close是动态创建的,因此您需要使用.live-这将为添加到DOM中的每个新对象分配单击处理程序。请参阅: 您的.close是动态创建的,因此您需要使用.live-这将为添加到DOM中的每个新对象分配单击处理程序。请参阅: 当您绑定到$span.close时,还不在DOM中。请尝试使用.live here 当您绑定到$span.close时,还不在DOM

在这里我还在学习jquery,我试着设置一组div,它们先扩展然后关闭,但是在关闭时什么也没有发生。有人能解释一下我做错了什么吗

谢谢!

您的.close是动态创建的,因此您需要使用.live-这将为添加到DOM中的每个新对象分配单击处理程序。请参阅:

您的.close是动态创建的,因此您需要使用.live-这将为添加到DOM中的每个新对象分配单击处理程序。请参阅:

当您绑定到$span.close时,还不在DOM中。请尝试使用.live here

当您绑定到$span.close时,还不在DOM中。请尝试使用.live here


您正在动态添加span.close元素

因此,您需要使用该方法来绑定事件

$("span.close").live('click', function() {
    $(this).parent('.post-big').hide();
    $(this).parent().prev().show();       
   });
还要注意的是,我使用了prev,因为没有下一个元素,而且您似乎希望恢复先前关闭的元素


工作演示时,您正在动态添加span.close元素

因此,您需要使用该方法来绑定事件

$("span.close").live('click', function() {
    $(this).parent('.post-big').hide();
    $(this).parent().prev().show();       
   });
还要注意的是,我使用了prev,因为没有下一个元素,而且您似乎希望恢复先前关闭的元素


上进行演示,因为这会出现多次,对于那些回答这一问题的人来说也是如此:从jQuery 1.7开始,应该优先使用live。@DavidThomas,我无法对此进行足够的升级!有没有可能我们可以得到一个答案,而不是使用未折旧的on?只需替换.live with.on,似乎对$body不起作用。'click','div.expand',函数{和$body.on'click','span.close',函数{。请阅读第一条评论中提供的文档。谢谢!如果你回答了这个问题,我会给你这个问题,因为这是最新的方式。而且你不知道为什么“展开”“关闭”循环在一次尝试后停止工作框是空的,是吗?因为这会出现多次,这对那些人来说也是一样的回答:从jQuery 1.7开始,应该优先使用live。@DavidThomas,这一点我还不够肯定!有没有可能我们可以用非折旧的on来得到答案?只是替换.live with.on似乎不起作用$body。on'click'、'div.expand',function{和$body.on'click'、'span.close',function{。请阅读第一条评论中提供的文档。谢谢!如果你回答了这个问题,我会给你这个问题,因为这是最新的回答方式。而且你不知道为什么“展开”“关闭”循环在一次尝试后停止工作框是空的,是吗?谢谢你的帮助,我确实需要.prev而不是.next,但是,当您从“展开”循环到“关闭”再循环到“展开”,框变为空,不会再次加载ajax请求。您知道为什么会这样做吗???@尝试,这是因为您隐藏了容器。请查看每次单击展开时我重新显示容器的位置。感谢您的帮助,我确实需要.prev而不是.next,当您从“展开”循环到“关闭”再循环到“展开”时,该框将变为空,并且不会再次加载ajax请求。您知道为什么会这样做吗???@尝试,这是因为您隐藏了容器。请查看每次单击展开时我在何处重新显示容器。live最终被弃用。无论如何,.live不会将任何内容分配给添加到DOM的新元素。它将处理程序分配给文档并使用事件委派。live最终被弃用。在任何情况下,.live不会将任何内容分配给添加到DOM的新元素。它将处理程序分配给文档并使用事件委派。
$("span.close").live('click', function() {
    $(this).parent('.post-big').hide();
    $(this).parent().prev().show();       
   });