javascript - jQuery Filtrify 插件 - 过滤 "or"而不是 "and"

标签 javascript jquery filter

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

如果我选择Genre: ActionMain Actors: Aaron Eckhart,它表明电影的类型是Action,而且他们的主要 Actor 是Aaron Eckhart。 (在这种情况下:“黑暗骑士”)

到目前为止,一切都很好。但是如果我选择例如类型: Action 、动画(两者),它也只显示一部电影,它满足两个条件

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

例如,如果我选择 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 ) {

这会影响字段标签过滤的 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/

相关文章:

java - 如何设置过滤器仅适用于内容类型 "html/text"?

jQuery live 和 prop 和change

javascript - 在第二轮应用程序运行期间事件被调用两次

php - 从父项中获取过滤后的子项

javascript - 如何在 HTML 文本区域中添加换行符

javascript - 使用javascript获取 '[ ]'标签内的文本

javascript - 根据 id 数组过滤对象数组中的 id

javascript - 如何将 ELSE 添加到要追加的 IF 语句

javascript - 我想在 javascript 中做动态 div 高度

javascript - 调用异步函数 main 的正确方法是什么?