检查一下:http://luis-almeida.github.io/filtrify/movies.html

如果我选择Genre: ActionMain Actors: Aaron Eckhart,它将显示电影的类型为动作,并且其主要演员为亚伦·埃克哈特(Aaron Eckhart)。 (在这种情况下:“黑暗骑士”)

到现在为止一切都很好。但是,例如,如果我选择Genre: Action, Animation(两者),则它也只显示一部符合这两个条件的电影。

我想要的是,如果我在一个“父代”(类型等)中选择多个值,它将执行一个“或”条件,而不是“与”条件。

例如,如果我选择Genre: actionMain Actors: Aaron Eckhart, Aaron Johnson,它将显示:

genre: action
AND
main actors: (Aaron Eckhart OR Aaron Johnson)


(^这不是代码...)

码:

$(function() {
    $.filtrify("container", "placeHolder");
});




<ul id="container">
    <li data-genre="Drama, Sci-Fi, Thriller" data-main-actors="Harrison Ford, Rutger Hauer, Sean Young, Edward James Olmos" data-director="Ridley Scott"> ... Blade Runner ... </li>
    <li data-genre="Action, Crime, Drama, Thriller" data-main-actors="Christian Bale, Michael Caine, Ken Watanabe, Liam Neeson" data-director="Christopher Nolan"> ... Batman Begins ... </li>
    <li data-genre="Drama" data-main-actors="Mark Wahlberg, Julianne Moore, Burt Reynolds, Luis Guzmán" data-director="Paul Thomas Anderson"> ... Boogie Nights ... </li>
    <li data-genre="Action, Adventure" data-main-actors="Harrison Ford, Sean Connery, Alison Doody, Denholm Elliott" data-director="Steven Spielberg"> ... Indiana Jones and the Last Crusade ... </li>
    <li data-genre="Crime, Mystery, Thriller" data-main-actors="Harvey Keitel, Tim Roth, Michael Madsen, Chris Penn" data-director="Quentin Tarantino"> ... Reservoir Dogs ... </li>
    ...
</ul>


谢谢,
对不起我的英语

最佳答案

实际上很简单:
在filtrify.js的Filtrify.prototype.filter函数中,替换为:

if ( !this._query[f].length  || c >= this._query[f].length ) {


与:

if ( !this._query[f].length  || c >= 1 ) {


这将影响字段标记过滤的“或”条件,但保留字段之间的“与”条件。

然后,要保持字段计数不变(如果保持原样,由于不再是AND条件,这会使用户感到困惑),请在filtrify.js的Filtrify.prototype.updateFields函数中更改:

if( match && tags ) {




if( tags ) {


如果您还尝试一次显示一个面板,则此thread解决方案...

希望这可以帮助...

关于javascript - jQuery Filtrify插件-过滤“或”而不是“与”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20933606/

10-12 15:33