jQuery技术:通过下拉值对表进行排序(简化我的代码)

我有一张桌子。 我希望用户能够通过他们在给定下拉列表中选择的选项来过滤表格。 我有它的工作,但它很麻烦,很难添加新的行(不能让它在jsfiddle工作,抱歉https://jsfiddle.net/anschwem/Y4cf6/2/ )。 任何简化的代码将不胜感激。 此外,如果此代码仅限于过滤某个表,那将是很好的,所以我可以有很多表和许多下拉。 如果这可以在没有行ID的情况下完成,甚至更好。 谢谢! 我的表/ html:

cats
cats
dogs
birds
dogs
Select... Cats Dogs Birds

码:

   $(window).load(function(){ $('select').change(function() { if($('#selectFilter option:selected').attr('id') == "sel_All" || $('#selectFilter option:selected').attr('id') == "sel_All"){$('#catRow').show();$('#catRow2').show();$('#dogRow').show();$('#dogRow2').show();$('#birdRow').show();} if($('#selectFilter option:selected').attr('id') == "selCats" || $('#selectFilter option:selected').attr('id') == "selCats"){$('#catRow').show();$('#catRow2').show();$('#dogRow').hide();$('#dogRow2').hide();$('#birdRow').hide();} if($('#selectFilter option:selected').attr('id') == "selDogs" || $('#selectFilter option:selected').attr('id') == "selDogs"){$('#catRow').hide();$('#catRow2').hide();$('#dogRow').show();$('#dogRow2').show();$('#birdRow').hide();} if($('#selectFilter option:selected').attr('id') == "selBirds" || $('#selectFilter option:selected').attr('id') == "selBirds"){$('#catRow').hide();$('#catRow2').hide();$('#dogRow').hide();$('#dogRow2').hide();$('#birdRow').show();}  

    请在此处找到重构代码“ ”,代码片段如下所示。

    HTML代码:

      
    cats
    cats 2
    dogs
    birds

    和JavaScript代码:

      $(document).load(function () { $('#selectFilter').change(function () { $(".all").hide(); $("." + $(this).find(":selected").attr("id")).show(); }); }); 

    希望这有助于您轻松高效地维护代码。

    我重构了你的小提琴: http : //jsfiddle.net/Y4cf6/4/

    通过利用CSS类和内置属性(如“value”),我们可以轻松地使这些代码更通用。

    对于这个HTML:

     
    Cat 1
    Cat 2
    Dog 1
    Cat 3
    Bird 1
    Cat 4
    Dog 2

    Javascript简化为单行:

     $("#selectFilter").on("change", function() { $("#animals").find("tr").hide().filter("." + $(this).val()).show(); }); 

    编辑:这个不能处理的一个案例是给你一种再次显示所有行的方法。 我将此作为练习留给您,但这里有一个提示:您可以读取$(this).val()的值,如果没有值,则显示所有行而不是过滤它们。

    您可以像这样更改您的html标记

     
    cats
    cats
    dogs
    birds
    dogs

    那你的jQuery

     $('#selectFilter').change(function(){ var trs = $('#animal tr'); if(this.value == ''){ // if first option picked show all trs.show(); }else{ var $el = $('.'+this.value); // element to show trs.not($el).hide(); // hide all but the elements to show $el.show(); // show elements } }); 

    小提琴

    您应该查看DataTables ,它内置了这种过滤( API中的 fnFilter)

    起初可能有点学习曲线,但最终会更加灵活。

      以上就是jQuery教程分享通过下拉值对表进行排序(简化我的代码)相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/jquerytutorial/561862.html

      (0)
      上一篇 2021年2月4日
      下一篇 2021年2月4日

      精彩推荐