diqu.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. function diqu(layer, form, box) {
  2. var diqu = $(box),
  3. linkage_check = function (obj) {
  4. var checked = obj.closest('li').find('input:checkbox:checked');
  5. if (!obj.is(':checked') && checked.length) {
  6. //子集元素存在选中 但没有全部选中 添加some类 显示为小正方形
  7. obj.closest('.diqu_checkbox').addClass('layui-form-checked-some');
  8. return true;
  9. }
  10. },
  11. init = function () {
  12. var ul3 = diqu.find('ul ul ul');
  13. ul3.each(function(index, el) {
  14. var t = $(el);
  15. if (!$(el).children().length) {
  16. t.addClass('no-child');
  17. }
  18. });
  19. diqu.find('input:checkbox').not(ul3.find('input:checkbox'))
  20. .attr('diqu-linkage', 1)
  21. .each(function(index, el) {
  22. linkage_check($(el));
  23. });
  24. }
  25. //checkbox事件
  26. $('.diqu_checkbox input[type="checkbox"]').on('click', function () {
  27. var t = $(this);
  28. if (t.attr('diqu-linkage')) {
  29. if (t.is(':checked')) {
  30. if (t.closest('.diqu_checkbox').hasClass('layui-form-checked-some')) {
  31. t.closest('li').find('input:checkbox').removeProp('checked')
  32. .closest('.diqu_checkbox').removeClass('layui-form-checked-some');
  33. } else {
  34. t.closest('li').find('input:checkbox').prop('checked', true)
  35. .closest('.diqu_checkbox').removeClass('layui-form-checked-some');
  36. }
  37. } else {
  38. if (!linkage_check(t)) {
  39. t.closest('li').find('input:checkbox').removeProp('checked')
  40. .closest('.diqu_checkbox').removeClass('layui-form-checked-some');
  41. }
  42. }
  43. }
  44. });
  45. //防止选框超出
  46. $(box+'>ul>li>ul>li').on('mouseenter', function () {
  47. var t = $(this),
  48. popup = t.children('ul');
  49. if (!popup.length) {
  50. t.addClass('no-child').off('mouseenter');
  51. return;
  52. }
  53. if (diqu.outerWidth(true) - (t.position().left+popup.outerWidth(true)) < 20) {
  54. popup.addClass('diqu_popup_r');
  55. }else{
  56. popup.removeClass('diqu_popup_r');
  57. }
  58. });
  59. //所有元素初始化
  60. init();
  61. }
  62. // 地区全选
  63. var area_select = (function () {
  64. var area_select_all = false;
  65. return function (obj) {
  66. $('.diqu_select').on('click', function () {
  67. if (!area_select_all) {
  68. $('.layui-form-checked-some').removeClass('layui-form-checked-some');
  69. }
  70. obj.prop('checked', area_select_all = !area_select_all);
  71. });
  72. }
  73. })();