JS实现树形选择器

(function ($) {
 $.extend($.tree.callback,{
  /*CheckNode状态改变以后,回调函数*/
  oncheckchanged:function(NODE,TREE_OBJ){
   return true;
  }
 });

 $.extend($.tree.plugins, {
  "checkbox" : {
   defaults : {
    three_state : true
   },
   get_checked : function (t) {
    if(!t) t = $.tree.focused();
    return t.container.find("a.checked").parent();
   },
   get_undeterminded : function (t) {
    if(!t) t = $.tree.focused();
    return t.container.find("a.undetermined").parent();
   },
   get_unchecked : function (t) {
    if(!t) t = $.tree.focused();
    return t.container.find("a:not(.checked, .undetermined)").parent();
   },

   check : function (n) {
    if(!n) return false;
    var t = $.tree.reference(n);
    n = t.get_node(n);
    if(n.children("a").hasClass("checked")) return true;

    var opts = $.extend(true, {}, $.tree.plugins.checkbox.defaults, t.settings.plugins.checkbox);
    if(opts.three_state) {
     n.find("li").andSelf().children("a").removeClass("unchecked undetermined").addClass("checked");
     n.parents("li").each(function () {
      if($(this).children("ul").find("a:not(.checked):eq(0)").size() > 0) {
       $(this).parents("li").andSelf().children("a").removeClass("unchecked checked").addClass("undetermined");
       return false;
      }
      else $(this).children("a").removeClass("unchecked undetermined").addClass("checked");
     });
    }
    else n.children("a").removeClass("unchecked").addClass("checked");
    t.callback("oncheckchanged", [n,t]);
    return true;
   },
   uncheck : function (n) {
    if(!n) return false;
    var t = $.tree.reference(n);
    n = t.get_node(n);
    if(n.children("a").hasClass("unchecked")) return true;

    var opts = $.extend(true, {}, $.tree.plugins.checkbox.defaults, t.settings.plugins.checkbox);
    if(opts.three_state) {
     n.find("li").andSelf().children("a").removeClass("checked undetermined").addClass("unchecked");
     n.parents("li").each(function () {
      if($(this).find("a.checked, a.undetermined").size() - 1 > 0) {
       $(this).parents("li").andSelf().children("a").removeClass("unchecked checked").addClass("undetermined");
       return false;
      }
      else $(this).children("a").removeClass("checked undetermined").addClass("unchecked");
     });
    }
    else n.children("a").removeClass("checked").addClass("unchecked");
    t.callback("oncheckchanged", [n,t]);
    return true;
   },
   toggle : function (n) {
    if(!n) return false;
    var t = $.tree.reference(n);
    n = t.get_node(n);
    if(n.children("a").hasClass("checked")) $.tree.plugins.checkbox.uncheck(n);
    else $.tree.plugins.checkbox.check(n);
   },
   get_nodestate :function(n){
    if(!n) return false;
    var t = $.tree.reference(n);
    n = t.get_node(n);
    return n.children("a").hasClass("checked");
   },
   callbacks : {
    onchange : function(n, t) {
     $.tree.plugins.checkbox.toggle(n);
    }
   }
  }
 });
})(jQuery);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值