Javascript 滑动切换不';ajax刷新div后无法工作

Javascript 滑动切换不';ajax刷新div后无法工作,javascript,jquery,ajax,Javascript,Jquery,Ajax,现在我已经设置了slideToggle函数,它运行良好。但是在我过滤了结果之后,幻灯片就不起作用了。在此页面上,您可以看到: 单击单选按钮过滤结果后,幻灯片将完全不滑动。问题是什么?代码将是无用的,因为ajax加载文件,该文件在加载之前已包含并已运行…一旦ajax加载该部分,您可能需要重新连接事件侦听器(如on(单击…),等等)。因为它们是DOM的新成员,所以不会附加这些侦听器 您可以在ajax加载的末尾添加一个步骤,分离并重新连接相关的侦听器 后续行动: 这是您当前的代码: $('.show

现在我已经设置了slideToggle函数,它运行良好。但是在我过滤了结果之后,幻灯片就不起作用了。在此页面上,您可以看到:

单击单选按钮过滤结果后,幻灯片将完全不滑动。问题是什么?代码将是无用的,因为ajax加载文件,该文件在加载之前已包含并已运行…

一旦ajax加载该部分,您可能需要重新连接事件侦听器(如on(单击…),等等)。因为它们是DOM的新成员,所以不会附加这些侦听器

您可以在ajax加载的末尾添加一个步骤,分离并重新连接相关的侦听器


后续行动:

这是您当前的代码:

$('.show').click(function() {
    $(this).closest('h3').next('.slidetoggle').slideToggle();
});
执行此操作以清除所有剩余的链接事件处理程序(因为我们将在稍后添加它们):

然后我会以这种方式重做click处理程序(我更喜欢使用“on”语法,因为它与“off”很好地匹配):

您可以在这样的函数中同时使用这两个函数:

function relinkEvents() {
    $('.show').off();
    $('.show').on('click', function() {
        $(this).closest('h3').next('.slidetoggle').slideToggle();
    });
}

一旦ajax加载该部分,您可能需要重新连接事件侦听器(如on(单击,…)等)。因为它们是DOM的新成员,所以不会附加这些侦听器

您可以在ajax加载的末尾添加一个步骤,分离并重新连接相关的侦听器


后续行动:

这是您当前的代码:

$('.show').click(function() {
    $(this).closest('h3').next('.slidetoggle').slideToggle();
});
执行此操作以清除所有剩余的链接事件处理程序(因为我们将在稍后添加它们):

然后我会以这种方式重做click处理程序(我更喜欢使用“on”语法,因为它与“off”很好地匹配):

您可以在这样的函数中同时使用这两个函数:

function relinkEvents() {
    $('.show').off();
    $('.show').on('click', function() {
        $(this).closest('h3').next('.slidetoggle').slideToggle();
    });
}

我该怎么做?@phil function relinkEvents(){$('button.show').off():$('button.show').on('click',function(){…});}不确定单击函数是什么,但您可以使用同一选择器上的'off()'函数从添加到的任何内容中删除它。然后,像在页面的初始加载中那样重新链接它。我会像上面显示的那样将取消链接/重新链接填充到一个函数中,这样您可以更轻松地调用它。@phil,我在上面的初始答案中添加了一些实际代码。试试看,让我知道这对你是否有效。我怎么做?@phil function relinkEvents(){$('button.show').off():$('button.show').on('click',function(){…});}不确定你的on-click函数是什么,但你可以在同一个选择器上使用'off()'函数将它添加到的内容删除。然后,像在页面的初始加载中那样重新链接它。我会像上面显示的那样将取消链接/重新链接填充到一个函数中,这样您可以更轻松地调用它。@phil,我在上面的初始答案中添加了一些实际代码。试试看,让我知道这是否适合你。