无法删除已设置的活动元素

时间:2018-01-12 01:36:11

标签: jquery html ajax

目前我正致力于数据库的排序脚本。我将使用Filtermenu过滤我的数据库,选项将显示为链接,在我点击链接后,我通过jQuery执行Ajax请求以过滤结果并重新加载Filtermenu。这一切都很好。

但我有一个删除过滤器的问题..有时,当我点击X时,它会删除过滤器,但有时,我必须单击3或4次,以删除过滤器。

我的jQuery代码是:

// Doing set Filter
$('.figurelib-sorting').on('click', 'a', function(e) {
    $(this).parent().find('input').val($(this).data('id'));
    figurelib_handleFilters();
    e.preventDefault();
});

// Doing remove Filter
$('.figurelib-sorting').on('click', 'a.remove', function(e) {
    $(this).parent().parent().find('input').val('');
    figurelib_handleFilters();
    e.preventDefault();
});

当没有设置过滤器时我的HTML-Markup:

<div id="figurelib-sorting-brands" class="figurelib-sorting">
  <div class="side-label">
    <i class="fa fa-fw fa-building"></i> Brands
  </div>
  <div class="scroll-wrapper scrollbar-inner scrollbar-inner-brands" style="position: relative;">
    <div class="scrollbar-inner scrollbar-inner-brands scroll-content" style="height: auto; margin-bottom: 0px; margin-right: 0px; max-height: 40px;">
      <input type="hidden" id="figurelib_sorting_brand" value="0">
      <a href="#" title="Alien (1979)" data-id="1">
        <i class="fa fa-fw fa-building"></i> Alien (1979)
        <span class="badge badge-success pull-right">2</span>
      </a><br>
      <a href="#" title="Aliens (1986)" data-id="2">
        <i class="fa fa-fw fa-building"></i> Aliens (1986)
        <span class="badge badge-success pull-right">1</span>
      </a><br>
    </div>
  </div>
</div>

设置过滤器后的HTML-Markup:

<div id="figurelib-sorting-brands" class="figurelib-sorting">
  <div class="side-label">
    <i class="fa fa-fw fa-building"></i> Brands
  </div>
  <div class="scroll-wrapper scrollbar-inner scrollbar-inner-brands" style="position: relative;">
    <div class="scrollbar-inner scrollbar-inner-brands scroll-content" style="height: auto; margin-bottom: 0px; margin-right: 0px; max-height: 38px;">
      <input type="hidden" id="figurelib_sorting_brand" value="1">
      <i class="fa fa-fw fa-building"></i> <strong>Alien (1979)</strong>
      <span class="pull-right">
        <a href="#" title="Remove Brand Filter" class="remove">
          <i class="fa fa-fw fa-times text-danger"></i>
        </a>
      </span>
      <span class="badge badge-success pull-right">2</span><br>
    </div>
  </div>
</div>

请注意,我有超过1个过滤器,所有使用相同的jQuery脚本调用,都具有相同的HTML-Markup(期望DIV-ID)。

感谢您的帮助,问候;)

1 个答案:

答案 0 :(得分:0)

设置run类后,两个处理程序都将运行。如果您只想在没有remove课程时运行set过滤器,则需要检查该类别。将其更改为:

remove

另一种方法是使用单个处理程序检查是否设置了// Doing set Filter $('.figurelib-sorting').on('click', 'a:not(.remove)', function(e) { $(this).parent().find('input').val($(this).data('id')); figurelib_handleFilters(); e.preventDefault(); }); 类:

remove