javascript – jQuery .hide()在某些浏览器中不起作用

前端之家收集整理的这篇文章主要介绍了javascript – jQuery .hide()在某些浏览器中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们使用jQuery .hide()来隐藏选择输入中的选项 – 一个月内不到31天.它适用于Google Chrome和FireFox,但在Internet Explorer,Opera和Safari中无效.以下是我们使用的 JavaScript代码
  1. $(function() {
  2. // Show and hide days according to the selected year and month.
  3. function show_and_hide_days(fp_form) {
  4. var select_year= $(fp_form).find("select.value_year");
  5. var select_month= $(fp_form).find("select.value_month");
  6. var select_day= $(fp_form).find("select.value_day");
  7. var selected_year= parseInt($(select_year).val());
  8. var selected_month= parseInt($(select_month).val());
  9. var selected_day= parseInt($(select_day).val());
  10. var days_in_month= new Date(selected_year,selected_month,0).getDate();
  11. if ((days_in_month >= 28))
  12. {
  13. // If selected day is bigger than the number of days in the selected month,reduce it to the maximal day in this month.
  14. if (selected_day > days_in_month)
  15. {
  16. $(select_day).val(days_in_month);
  17. }
  18. // Show all the days in this month and hide days which are not in this month.
  19. $(select_day).find("option").each(function() {
  20. var day= parseInt($(this).val());
  21. if (day <= days_in_month)
  22. {
  23. $(this).show();
  24. }
  25. else
  26. {
  27. $(this).hide();
  28. }
  29. });
  30. }
  31. }
  32.  
  33. // Show and hide all days in this page.
  34. function show_and_hide_all_days() {
  35. $("select.value_day").each(function() {
  36. var form= $(this).closest("form");
  37. // Show and hide days according to the selected year and month.
  38. show_and_hide_days(form);
  39. });
  40. }
  41.  
  42. // Show and hide all days in this page.
  43. show_and_hide_all_days();
  44.  
  45. $("select.value_year,select.value_month").live("change",function() {
  46. var form= $(this).closest("form");
  47. // Show and hide days according to the selected year and month.
  48. show_and_hide_days(form);
  49. return false;
  50. });
  51. });

这是HTML代码

  1. <select class="value_year">
  2. <option value="2000">2000</option>
  3. <option value="2001">2001</option>
  4. <option value="2002">2002</option>
  5. <option value="2003">2003</option>
  6. <option value="2004">2004</option>
  7. <option value="2005">2005</option>
  8. <option value="2006">2006</option>
  9. <option value="2007">2007</option>
  10. <option value="2008">2008</option>
  11. <option value="2009">2009</option>
  12. <option value="2010">2010</option>
  13. <option value="2011">2011</option>
  14. <option value="2012" selected="selected">2012</option>
  15. <option value="2013">2013</option>
  16. </select>
  17. /
  18. <select class="value_month">
  19. <option value="1">01</option>
  20. <option value="2">02</option>
  21. <option value="3">03</option>
  22. <option value="4">04</option>
  23. <option value="5">05</option>
  24. <option value="6">06</option>
  25. <option value="7">07</option>
  26. <option value="8">08</option>
  27. <option value="9">09</option>
  28. <option value="10">10</option>
  29. <option value="11">11</option>
  30. <option value="12" selected="selected">12</option>
  31. </select>
  32. /
  33. <select class="value_day">
  34. <option value="1">01</option>
  35. <option value="2">02</option>
  36. <option value="3">03</option>
  37. <option value="4">04</option>
  38. <option value="5">05</option>
  39. <option value="6">06</option>
  40. <option value="7">07</option>
  41. <option value="8">08</option>
  42. <option value="9">09</option>
  43. <option value="10">10</option>
  44. <option value="11">11</option>
  45. <option value="12">12</option>
  46. <option value="13">13</option>
  47. <option value="14">14</option>
  48. <option value="15">15</option>
  49. <option value="16">16</option>
  50. <option value="17">17</option>
  51. <option value="18" selected="selected">18</option>
  52. <option value="19">19</option>
  53. <option value="20">20</option>
  54. <option value="21">21</option>
  55. <option value="22">22</option>
  56. <option value="23">23</option>
  57. <option value="24">24</option>
  58. <option value="25">25</option>
  59. <option value="26">26</option>
  60. <option value="27">27</option>
  61. <option value="28">28</option>
  62. <option value="29">29</option>
  63. <option value="30">30</option>
  64. <option value="31">31</option>
  65. </select>

我们正在使用jQuery v1.8.3(我升级到这个版本来测试它是否修复了问题,但是没有).

谢谢,
URI.

解决方法

这是一个浏览器问题,您无法在某些浏览器中隐藏选项,因为$(‘.selector’).hide();类似于$(‘.selector’).css(‘display’,’none’);一些浏览器无法隐藏它

你需要使用$(‘.selector’).remove();和$(‘.selector’).append();

更改代码

  1. if ((days_in_month >= 28))
  2. {
  3. // If selected day is bigger than the number of days in the selected month,reduce it to the maximal day in this month.
  4. if (selected_day > days_in_month)
  5. {
  6. $(select_day).val(days_in_month);
  7. }
  8. // Show all the days in this month and hide days which are not in this month.
  9. $(select_day).find("option").each(function() {
  10. var day= parseInt($(this).val());
  11. if (day <= days_in_month)
  12. {
  13. $(this).show();
  14. }
  15. else
  16. {
  17. $(this).hide();
  18. }
  19. });
  20. }

  1. // Remove days 29 - 31
  2. $(select_day).find("option[value='29'],option[value='30'],option[value='31']").remove();
  3. var daysOptions = "";
  4.  
  5. if (days_in_month >= 29) {
  6. daysOptions += '<option value="29">29</option>';
  7. }
  8. if (days_in_month >= 30) {
  9. daysOptions += '<option value="30">30</option>';
  10. }
  11. if (days_in_month == 31) {
  12. daysOptions += '<option value="31">31</option>';
  13. }
  14.  
  15. $(select_day).append(daysOptions);

http://jsfiddle.net/sL4jY/10/在IE chrome和Firefox中进行了测试

猜你在找的jQuery相关文章