检查一下:http://luis-almeida.github.io/filtrify/movies.html
如果我选择Genre: Action
和Main Actors: Aaron Eckhart
,它表明电影的类型是Action,而且他们的主要 Actor 是Aaron Eckhart。 (在这种情况下:“黑暗骑士”)
到目前为止,一切都很好。但是如果我选择例如类型: Action 、动画
(两者),它也只显示一部电影,它满足两个条件。
我想要的是,如果我在一个“父级”(流派等)中选择多个值,它将执行“或”条件,而不是“和”条件。
例如,如果我选择 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 ) {
这会影响字段标签过滤的 OR 条件,但它保留了字段之间的 AND 条件。
然后保持字段计数不变(如果保持原样,用户会感到困惑,因为它不再是 AND 条件),在 filtrify.js 的 Filtrify.prototype.updateFields 函数中,更改:
if( match && tags ) {
与
if( tags ) {
如果您还尝试一次显示一个面板,这 thread有解决办法...
希望这有助于...
关于javascript - jQuery Filtrify 插件 - 过滤 "or"而不是 "and",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20933606/