目前我正致力于数据库的排序脚本。我将使用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)。
感谢您的帮助,问候;)
答案 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