$(function() { /*================================================================ 情報 ================================================================*/ var allList = [ { id: "860", life: "59", url:"index.php?act=staff&id=860", img:"user_data/5869.jpg", nen:"平成17年式", soukou:"59279", title:"リクエスト車両ジープ白 クライスラー", sold:"", new:"", tag: ["新着","","","AT","売り切れ"], description: "tesut" }, { id: "854", life: "59", url:"index.php?act=staff&id=854", img:"user_data/5854.jpg", nen:"平成22年式", soukou:"89531", title:"プレマシーワイン682 マツダ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "840", life: "66", url:"index.php?act=staff&id=840", img:"user_data/5841.jpg", nen:"平成23年式", soukou:"77336", title:"プレマシーワイン677 マツダ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "816", life: "59", url:"index.php?act=staff&id=816", img:"user_data/5655.jpg", nen:"平成23年式", soukou:"100900", title:"ラフェスタ白667 ニッサン", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "814", life: "68", url:"index.php?act=staff&id=814", img:"user_data/5705.jpg", nen:"平成22年式", soukou:"105228", title:"エクシーガ黒671 スバル", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "812", life: "45", url:"index.php?act=staff&id=812", img:"user_data/5657.jpg", nen:"平成22年式", soukou:"86860", title:"フリード黒5120 ホンダ", sold:"", new:"", tag: ["","","","AT","売り切れ"], description: "tesut" }, { id: "811", life: "57", url:"index.php?act=staff&id=811", img:"user_data/5659.jpg", nen:"平成22年式", soukou:"103555", title:"プレマシー白668 マツダ", sold:"", new:"", tag: ["新着","","","AT","売り切れ"], description: "tesut" }, { id: "801", life: "68", url:"index.php?act=staff&id=801", img:"user_data/5544.jpg", nen:"平成22年式", soukou:"83758", title:"ウイッシュ黒664 トヨタ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "783", life: "68", url:"index.php?act=staff&id=783", img:"user_data/4926.jpg", nen:"平成21年式", soukou:"114900", title:"マークXジオ白638 トヨタ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "779", life: "69", url:"index.php?act=staff&id=779", img:"user_data/4939.jpg", nen:"平成22年式", soukou:"71226", title:"プレマシーワイン635 マツダ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "775", life: "69", url:"index.php?act=staff&id=775", img:"user_data/4928.jpg", nen:"平成22年式", soukou:"91700", title:"プレマシーワイン633 マツダ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "766", life: "59", url:"index.php?act=staff&id=766", img:"user_data/4919.jpg", nen:"平成22年式", soukou:"100200", title:"フリードグレー4951 ホンダ", sold:"", new:"", tag: ["","販売中","","AT",""], description: "tesut" }, { id: "765", life: "77", url:"index.php?act=staff&id=765", img:"user_data/4917.jpg", nen:"平成22年式", soukou:"56050", title:"ウイッシュ銀4954 トヨタ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "764", life: "68", url:"index.php?act=staff&id=764", img:"user_data/4914.jpg", nen:"平成21年式", soukou:"117890", title:"ウィッシュ赤632 トヨタ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "763", life: "75", url:"index.php?act=staff&id=763", img:"user_data/4916.jpg", nen:"平成23年式", soukou:"103605", title:"MPV白631 マツダ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "753", life: "58", url:"index.php?act=staff&id=753", img:"user_data/4920.jpg", nen:"平成21年式", soukou:"71949", title:"フリード銀5032 ホンダ", sold:"", new:"", tag: ["","販売中","","AT",""], description: "tesut" }, { id: "752", life: "59", url:"index.php?act=staff&id=752", img:"user_data/4906.jpg", nen:"平成20年式", soukou:"108280", title:"フリード銀4970 ホンダ", sold:"", new:"", tag: ["","販売中","","AT",""], description: "tesut" }, { id: "747", life: "69", url:"index.php?act=staff&id=747", img:"user_data/4901.jpg", nen:"平成21年式", soukou:"122681", title:"ウィッシュ黒636 トヨタ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "744", life: "68", url:"index.php?act=staff&id=744", img:"user_data/4898.jpg", nen:"平成23年式", soukou:"84633", title:"フリードスパイク銀4939 ホンダ", sold:"", new:"", tag: ["","販売中","","AT",""], description: "tesut" }, { id: "743", life: "58", url:"index.php?act=staff&id=743", img:"user_data/4924.jpg", nen:"平成23年式", soukou:"110602", title:"フリードグレー4932 ホンダ", sold:"", new:"", tag: ["","販売中","","AT",""], description: "tesut" }, { id: "702", life: "68", url:"index.php?act=staff&id=702", img:"user_data/4803.jpg", nen:"平成22年式", soukou:"84573", title:"エクシーガ黒600 スバル", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "677", life: "88", url:"index.php?act=staff&id=677", img:"user_data/4692.jpg", nen:"平成24年式", soukou:"104099", title:"フリードハイブリッドLブルー4713 ホンダ", sold:"", new:"", tag: ["新着","","","AT","売り切れ"], description: "tesut" }, { id: "640", life: "68", url:"index.php?act=staff&id=640", img:"user_data/4405.jpg", nen:"平成22年式", soukou:"67011", title:"プレマシー銀557 マツダ", sold:"", new:"", tag: ["新着","","","AT","売り切れ"], description: "tesut" }, { id: "634", life: "39", url:"index.php?act=staff&id=634", img:"user_data/4415.jpg", nen:"平成21年式", soukou:"102468", title:"パッソセッテ黒4769 トヨタ", sold:"", new:"", tag: ["","販売中","","AT",""], description: "tesut" }, { id: "630", life: "58", url:"index.php?act=staff&id=630", img:"user_data/4402.jpg", nen:"平成21年式", soukou:"109455", title:"フリード白4719 ホンダ", sold:"", new:"", tag: ["新着","","","AT","売り切れ"], description: "tesut" }, { id: "621", life: "68", url:"index.php?act=staff&id=621", img:"user_data/4374.jpg", nen:"平成22年式", soukou:"86930", title:"フリード黒4808 ホンダ", sold:"", new:"", tag: ["","販売中","","AT",""], description: "tesut" }, { id: "606", life: "49", url:"index.php?act=staff&id=606", img:"user_data/4303.jpg", nen:"平成21年式", soukou:"104000", title:"フリードグレー4665 ホンダ", sold:"", new:"", tag: ["新着","","","AT","売り切れ"], description: "tesut" }, { id: "603", life: "39", url:"index.php?act=staff&id=603", img:"user_data/4022.jpg", nen:"平成21年式", soukou:"97000", title:"SX-4銀543 スズキ", sold:"", new:"", tag: ["","","","AT","売り切れ"], description: "tesut" }, { id: "593", life: "39", url:"index.php?act=staff&id=593", img:"user_data/3943.jpg", nen:"平成21年式", soukou:"82300", title:"パッソセッテ赤4633 トヨタ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "589", life: "49", url:"index.php?act=staff&id=589", img:"user_data/3685.jpg", nen:"平成19年式", soukou:"128000", title:"マークXジオ銀539 トヨタ", sold:"", new:"", tag: ["新着","","","AT","売り切れ"], description: "tesut" }, { id: "484", life: "66", url:"index.php?act=staff&id=484", img:"user_data/3068.jpg", nen:"平成17年式", soukou:"89647", title:"アウトランダー白451 ミツビシ", sold:"", new:"", tag: ["","","","AT","売り切れ"], description: "tesut" }, { id: "410", life: "48", url:"index.php?act=staff&id=410", img:"user_data/2339.jpg", nen:"平成21年式", soukou:"106600", title:"フリード銀4051 ホンダ", sold:"", new:"", tag: ["新着","販売中","","AT",""], description: "tesut" }, { id: "394", life: "68", url:"index.php?act=staff&id=394", img:"user_data/2197.jpg", nen:"平成22年式", soukou:"89134", title:"エクシーガ白459 スバル", sold:"", new:"", tag: ["新着","","","AT","売り切れ"], description: "tesut" }, { id: "360", life: "39", url:"index.php?act=staff&id=360", img:"user_data/2124.jpg", nen:"平成23年式", soukou:"76700", title:"ラフェスタ青3996 ニッサン", sold:"", new:"", tag: ["","販売中","","AT",""], description: "tesut" }, { id: "159", life: "29", url:"index.php?act=staff&id=159", img:"user_data/1733.jpg", nen:"平成21年式", soukou:"90882", title:"ストリーム白4811 ホンダ", sold:"", new:"", tag: ["新着","","","AT","売り切れ"], description: "tesut" }, { id: "127", life: "19", url:"index.php?act=staff&id=127", img:"user_data/1748.jpg", nen:"平成19年式", soukou:"97956", title:"シエンタ銀3443 トヨタ", sold:"", new:"", tag: ["","","","AT","売り切れ"], description: "tesut" }, { id: "124", life: "44", url:"index.php?act=staff&id=124", img:"user_data/1710.jpg", nen:"平成17年式", soukou:"130856", title:"シエンタ銀3441 トヨタ", sold:"", new:"", tag: ["","","","AT","売り切れ"], description: "tesut" }, { id: "82", life: "49", url:"index.php?act=staff&id=82", img:"user_data/996.jpg", nen:"平成22年式", soukou:"112991", title:"エクシーガガンメタ602 スバル", sold:"", new:"", tag: ["","販売中","","AT",""], description: "tesut" }, { id: "81", life: "29", url:"index.php?act=staff&id=81", img:"user_data/1264.jpg", nen:"平成14年式", soukou:"88946", title:"エアトレック黒381 ミツビシ", sold:"", new:"", tag: ["","","","AT","売り切れ"], description: "tesut" }, { id: "63", life: "35", url:"index.php?act=staff&id=63", img:"user_data/1595.jpg", nen:"平成18年式", soukou:"92000", title:"ウィッシュグレー3618 トヨタ", sold:"", new:"", tag: ["","","","AT","売り切れ"], description: "tesut" }, ]; /*================================================================ スクリプトはじまり ================================================================*/ function init() { //イベント登録 $(".filter_life select").on("change", onFilterChange); $(".filter_tag input").on("change", onFilterChange); $(".filter_keyword button").on("click", onFilterChange); //最初は全て出力 refleshHtml(allList); } /*================================================================ HTML出力 ================================================================*/ function refleshHtml(list) { var outputHtml = ''; //出力する内容をoutputHtmlに格納 if (list.length > 0) { _.each(list, function(line, i) { outputHtml += '

' + line.title + '

'; outputHtml += '' + line.title + ''; outputHtml += '' + line.new + '' + line.sold + ''; outputHtml += '

価格 ' + line.life + '万円

'; outputHtml += '

年式: ' + line.nen + '

'; outputHtml += '

走行: 約 ' + line.soukou + 'km

'; outputHtml += '
'; }); } else { outputHtml += '

条件に当てはまる車を検索できませんでした。

'; } //HTML出力(フェードインアニメーションつき) $('.productArea').html(outputHtml); $('.productArea .product').css({opacity: 0}).each(function(i){$(this).delay(100 * i).animate({opacity:1}, 300); }); //検索件数表示 $('.productCntArea').html('

' + allList.length + '件中' + list.length + '件を表示しています。

'); } /*================================================================ 絞り込み条件を変更した時 ================================================================*/ function onFilterChange(e) { var filterFncs = []; var result = []; //セレクトボックスの値を引数に指定した関数filterByLifeをfilterFuncs配列に格納 filterFncs.push( function(list) { return filterByLife(list, $('.filter_life select').val()); } ); //チェックボックスの値を引数に指定した関数filterByTagをfilterFuncs配列に格納 filterFncs.push( function(list) { return filterByTag(list, $('.filter_tag input:checked')); } ); //キーワードの値を引数に指定した関数filterByKeywordをfilterFuncs配列に格納 filterFncs.push( function(list) { return filterByKeyword(list, _.escape($('.filter_keyword input').val())); } ); //FilterFuncs配列内の関数をバケツリレーみたいに1つずつ実行して結果をresult配列に格納 result = _.reduce(filterFncs, function(list, fnc) { return fnc(list); }, allList); //絞り込んだ結果を出力 refleshHtml(result); } /*================================================================ 絞り込み[1] セレクトボックス絞り込み関数 ================================================================*/ function filterByLife(list, value) { //絞り込み指定がない場合はリターン if (value == "") { return list; } //選択したセレクトボックスとlifeがマッチするかでフィルタリング return _.filter(list, function(item) { switch (value) { case '1': return item.life <= 10; case '2': return 10 < item.life && item.life <= 20; case '3': return 20 < item.life && item.life <= 30; case '4': return 30 < item.life && item.life <= 40; case '5': return 40 < item.life && item.life <= 50; case '6': return 50 < item.life; } }); } /*================================================================ 絞り込み[2] チェックボックス絞り込み関数 ================================================================*/ function filterByTag(list, value) { //絞り込み指定がない場合はリターン if (value.length == 0) { return list; } //選択した属性(チェックボックス)とtagがマッチするかでフィルタリング return _.filter(list, function(item) { var isMatch = false; //配列同士の比較 _.each(value, function(chkItem, i) { _.each(item.tag, function(tagItem, i) { if (tagItem === $(chkItem).val()) { isMatch = true; } }); }); return isMatch; }); } /*================================================================ 絞り込み[3] テキストボックス絞り込み関数 ================================================================*/ function filterByKeyword(list, value) { //絞り込み指定がない場合はリターン if (value == "") { return list; } //検索キーワードを配列に格納(スペースがある場合は複数格納) var freeAry = [];  var val = value.replace(/ /g, " "); searchAry = val.split(" "); //入力したキーワードがtitleもしくdescriptionにマッチするかでフィルタリング return _.filter(list, function(item) { var isMatch = false; _.each(searchAry, function(data, i) { if (item.title.indexOf(data) != -1 || item.description.indexOf(data) != -1) { isMatch = true; } }); return isMatch; }); } /*================================================================ スクリプトはじめ ================================================================*/ init(); });