Advertisement
Guest User

Untitled

a guest
Apr 21st, 2014
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.06 KB | None | 0 0
  1. $(document).ready(function () {
  2.  
  3. $('.filter').change(function () {
  4. var values = [];
  5. $('.filter option:selected').each(function () {
  6. if ($(this).val() != "") values.push($(this).text());
  7. });
  8. filter('table > tbody > tr', values);
  9. });
  10.  
  11. function filter(selector, values) {
  12. $(selector).each(function () {
  13. var sel = $(this);
  14. var hide = false;
  15. $.each(values, function (i, val) {
  16. if (sel.text().search(new RegExp("\b"+val+"\b")) < 0) hide = true;
  17. });
  18. hide ? sel.hide() : sel.show();
  19. });
  20. }
  21. });
  22.  
  23. <select class="filter">
  24. <option value="">None</option>
  25. <option value="a">wood</option>
  26. </select>
  27. <select class="filter">
  28. <option value="">None</option>
  29. <option value="1">blue</option>
  30. <option value="2">green</option>
  31. <option value="3">red</option>
  32. </select>
  33. <table>
  34. <tbody>
  35. <tr>
  36. <td>Wood comes from trees</td>
  37. <td>11</td>
  38. <td>blue</td>
  39. </tr>
  40. <tr>
  41. <td>Some wood is hard</td>
  42. <td>512</td>
  43. <td>green</td>
  44. </tr>
  45. <tr>
  46. <td>Some people like woodwork</td>
  47. <td>51</td>
  48. <td>red</td>
  49. </tr>
  50. <tr>
  51. <td>Some wood is green</td>
  52. <td>12</td>
  53. <td>blue</td>
  54. </tr>
  55. </tbody>
  56. </table>
  57.  
  58. <select class="filter" data-col="0">
  59. <option value="">None</option>
  60. <option value="a">wood</option>
  61. </select>
  62. <select class="filter" data-col="2">
  63. <option value="">None</option>
  64. <option value="1">blue</option>
  65. <option value="2">green</option>
  66. <option value="2">red</option>
  67. </select>
  68.  
  69. $(document).ready(function () {
  70.  
  71. $('.filter').change(function () {
  72. var values = [];
  73.  
  74. $('.filter').each(function () {
  75. var colIdx = $(this).data('col');
  76.  
  77. $(this).find('option:selected').each(function () {
  78. if ($(this).val() != "") values.push( {
  79. text: $(this).text(),
  80. colId : colIdx
  81. });
  82. });
  83. });
  84. filter('table > tbody > tr', values);
  85. });
  86.  
  87. function filter(selector, values) {console.log(values);
  88. $(selector).each(function () {
  89. var sel = $(this);
  90. var tokens = sel.text().trim().split('n');
  91. var toknesObj = [], i;
  92. for(i=0;i<tokens.length;i++){
  93. toknesObj[i] = {
  94. text:tokens[i].trim(),
  95. found:false
  96. };
  97. }
  98.  
  99. var show = false;
  100. //console.log(toknesObj);
  101. $.each(values, function (i, val) {
  102.  
  103. if (toknesObj[val.colId].text.search(new RegExp("\b"+val.text+"\b")) >= 0) {
  104. toknesObj[val.colId].found = true;
  105. }
  106.  
  107. });
  108. console.log(toknesObj);
  109. var count = 0;
  110. $.each(toknesObj, function (i, val) {
  111. if (val.found){
  112. count+=1;
  113. }
  114. });
  115. show = (count === values.length);
  116. show ? sel.show() : sel.hide();
  117. });
  118. }
  119. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement