检查一下:http://luis-almeida.github.io/filtrify/movies.html
如果我选择Genre: Action
和Main Actors: Aaron Eckhart
,它将显示电影的类型为动作,并且其主要演员为亚伦·埃克哈特(Aaron Eckhart)。 (在这种情况下:“黑暗骑士”)
到现在为止一切都很好。但是,例如,如果我选择Genre: Action, Animation
(两者),则它也只显示一部符合这两个条件的电影。
我想要的是,如果我在一个“父代”(类型等)中选择多个值,它将执行一个“或”条件,而不是“与”条件。
例如,如果我选择Genre: action
,Main 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/