检查出来: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>
谢谢你, 抱歉我的英文
答案 0 :(得分:2)
实际上非常简单: 在filtrify.js中的Filtrify.prototype.filter函数中,替换:
if ( !this._query[f].length || c >= this._query[f].length ) {
使用:
if ( !this._query[f].length || c >= 1 ) {
这会影响字段标记过滤的OR条件,但它会保留字段之间的AND条件。
然后保持字段数不变(如果保持不变,那将对用户造成混淆,因为它不再是AND条件),在filtrify.js的Filtrify.prototype.updateFields函数中,更改:
if( match && tags ) {
与
if( tags ) {
如果您还尝试一次显示一个面板,则此thread有解决方案......
希望这会有所帮助......