javascript - jQuery remove 仅适用于 AJAX 调用后的第二次点击

标签 javascript jquery html css ajax

我有两个 div,每个 div 都有一个链接列表,单击链接时会进行 AJAX 调用,将一些 JSON 数据附加到单独的 div。在附加数据的同时,我希望带有链接的 div 隐藏/删除刚刚单击的链接。

第三个 div 的类为“panel-close”,可以单击它删除带有刚刚附加的数据的 div,并使包含链接的 div 再次出现。于是一切又回到了最初的状态

我遇到的问题是,一旦包含数据的 div 被删除,有时包含链接的 div 不会再次出现,有时会在第二次单击面板关闭 div 时发生,有时 JSON 数据不会出现单击链接后再次追加。

我的是我的 HTML 的基本设置:

<div class="curation-panel">
 <div class="curation-contents-list">
   <a class="load-article"></a>
 </div>

 <div class="article-container">
 </div>
</div>

<div class="film-panel">
 <div class="film-contents-list">
   <a class="load-project"></a>
 </div>

 <div class="project-container">
 </div>
</div>

<div class="panel-close">
</div>

我是一个 Jquery 菜鸟,我可能采取了完全错误的方法,但这是我的 jquery 代码:

$(function(){
  var element = $('.load-article');
  var url     = element.data('page') + '.json';
  var target  = $('.article-container');

  $(element).on('click', function(e) {
    e.preventDefault();

    $.get(url, function(data) {
      $('.curation-contents-list').hide();
      $(target).append(data);
    });
      $("body").addClass("load-article-is-open"),
      $(this).animate({
          scrollTop: 0
      }, 300, "easeInOutExpo")

  });
}),

$(function(){
  var element = $('.load-project');
  var url     = element.data('page') + '.json';
  var target  = $('.project-container');

  $('.load-project').on('click', function(e) {
    e.preventDefault();

    $.get(url, function(data) {
      $('.film-contents-list').hide();
        $(target).append(data);
    });
      $("body").addClass("load-project-is-open"),
        $(this).animate({
            scrollTop: 0
        }, 300, "easeInOutExpo")
  });
}),

$(".panel-close").click(function() {
    $("body").removeClass("curation-panel-is-open").removeClass("film-panel-is-open").removeClass("load-article-is-open").removeClass("load-project-is-open"),
    $(".curation-panel").animate({
        scrollTop: 0
    }, 300, "easeInOutExpo"),
    $(".film-panel").animate({
        scrollTop: 0
    }, 300, "easeInOutExpo"),

    $('.curation-contents').show();
    $('.film-contents-list').show();
    $('.article-container').remove();
    $('.project-container').remove();
});

最佳答案

您引用一个元素,然后将 Ajax 调用的结果附加到该元素

var target  = $('.article-container');

这里的问题是你正在删除元素

$('.article-container').remove();
$('.project-container').remove();

删除它们后,引用它们的代码将找不到它们。

我想你想使用 empty() 而不是 remove()

关于javascript - jQuery remove 仅适用于 AJAX 调用后的第二次点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41446665/

相关文章:

javascript - 数组原型(prototype) TypeScript

javascript - 对象值更改时在 Web 浏览器中停止调试器

javascript - 根据子元素 href 属性将事件类设置为元素

jquery - 更改 slider handle 图像

javascript - Jquery提交表单不起作用

c# - 禁用/启用数据列表复选框上的外部 asp 按钮控件选中 javascript?

非表单元素的 jQuery 更改事件

javascript - 加载页面和覆盖

javascript - PHP/HTML 为具有特定名称的子类别添加 onclick 函数

javascript - 这是使用 js 剥离 html 标签的安全方法吗?