2017-07-21 93 views
3

我正在学习jQuery我做了一个简单的选择过滤器的基本知识与学习新技术的目的。 我的问题是,什么是更好也许更复杂的方式来做到这一点: https://codepen.io/frivolta/pen/LLwjjy什么是更好的方式来做这个与jQuery简单的过滤器

$(".elementFilter li").on("click",eventTrigger); 

function eventTrigger(){ 
    var getFilterName = $(this).attr("class"); 
    if(getFilterName!="all"){ 
    $(".elementList li:not([data-category='"+getFilterName+"'])").hide(); 
    $(".elementList [data-category='"+getFilterName+"']").show(); 
    }else{ 
    $(".elementList li").show(); 
    } 
} 


<div class="elements"> 
    <ul class="elementFilter"> 
    <li class="all">Show all</li> 
    <li class="filterOne">Filter One</li> 
    <li class="filterTwo">Filter Two</li> 
    <li class="filterThree">Filter Three</li> 
    <li class="filterFour">Filter Four</li> 
    </ul> 
    <ul class="elementList"> 

    <li data-category="filterOne">Filter One</li> 
    <li data-category="filterTwo">Filter Two</li> 
    <li data-category="filterThree">Filter Three</li> 
    <li data-category="filterFour">Filter Four</li> 
    </ul> 
</div> 

我想他们之间的不同的功能和参数传递,如果您有任何意见,我会很高兴听到那。 谢谢, F.

回答

2

你的代码几乎没问题,但如果你改变添加li元素中的其他类,它将不会运行。看到我的代码如下。我解决了问题。

$(".elementFilter li").on("click",eventTrigger); 

function eventTrigger(){ 
    var isClasssAll = $(this).hasClass("all"); 
    var getFilterName = $(this).attr("data-category"); 

    if(!isClasssAll){ 
    $(".elementList li:not([data-category='"+getFilterName+"'])").hide(); 
    $(".elementList [data-category='"+getFilterName+"']").show(); 
    }else{ 
    $(".elementList li").show(); 
    } 
} 



<div class="elements"> 
    <ul class="elementFilter"> 
    <li class="all asdasd">Show all</li> 
    <li data-category="filterOne" class="filterOne 1">Filter One</li> 
    <li data-category="filterTwo" class="filterTwo 2">Filter Two</li> 
    <li data-category="filterThree" class="filterThree 3">Filter Three</li> 
    <li data-category="filterFour" class="filterFour 4">Filter Four</li> 
    </ul> 
    <ul class="elementList"> 

    <li data-category="filterOne">Filter One</li> 
    <li data-category="filterTwo">Filter Two</li> 
    <li data-category="filterThree">Filter Three</li> 
    <li data-category="filterFour">Filter Four</li> 
    </ul> 
</div> 
+0

你是对的,谢谢你的建议! –

+0

关于这一点,如果我在过滤器上放置更多类,例如

  • Filter One
  • 它不会起作用 –

    +1

    很好。如果你看到任何其他更好更快的方式来解决你发布的内容,请分享。 –

    相关问题