mln.colselect.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. (function($){
  2. $.fn.mlnColsel=function(data,setting){
  3. var dataObj={"Items":[
  4. {"name":"mlnColsel","topid":"-1","colid":"-1","value":"-1","fun":function(){alert("undefined!");}}
  5. ]};
  6. var settingObj={
  7. title:"请选择",
  8. value:"-1",
  9. width:100
  10. };
  11. settingObj=$.extend(settingObj,setting);
  12. dataObj=$.extend(dataObj,data);
  13. var $this=$(this);
  14. var $colselbox=$(document.createElement("a")).addClass("colselect").attr({"href":"javascript:;"});
  15. var $colseltext=$(document.createElement("span")).text(settingObj.title);
  16. var $coldrop=$(document.createElement("ul")).addClass("dropmenu");
  17. var selectInput = $.browser.msie?document.createElement("<input name="+$this.attr("id")+" />"):document.createElement("input");
  18. selectInput.type="hidden";
  19. selectInput.value=settingObj.value;
  20. selectInput.setAttribute("name",'info['+$this.attr("id")+']');
  21. var ids=$this.attr("id");
  22. $this.onselectstart=function(){return false;};
  23. $this.onselect=function(){document.selection.empty()};
  24. $colselbox.append($colseltext);
  25. $this.addClass("colsel").append($colselbox).append($coldrop).append(selectInput);
  26. $(dataObj.Items).each(function(i,n){
  27. var $item=$(document.createElement("li"));
  28. if(n.topid==0){
  29. $coldrop.append($item);
  30. $item.html("<span>"+n.name+"</span>").attr({"values":n.value,"id":"col_"+ids+"_"+n.colid});
  31. }else{
  32. if($("#col_"+ids+"_"+n.topid).find("ul").length<=0){
  33. $("#col_"+ids+"_"+n.topid).append("<ul class=\"dropmenu rootmenu\"></ul>");
  34. $("#col_"+ids+"_"+n.topid).find("ul:first").append($item);
  35. $item.html("<span>"+n.name+"</span>").attr({"values":n.value,"id":"col_"+ids+"_"+n.colid});
  36. }else{
  37. $("#col_"+ids+"_"+n.topid).find("ul:first").append($item);
  38. $item.html("<span>"+n.name+"</span>").attr({"values":n.value,"id":"col_"+ids+"_"+n.colid});
  39. }
  40. }
  41. });
  42. $this.find("li").each(function(){
  43. $(this).click(function(event){
  44. $colselbox.children("span").text($(this).find("span:first").text());
  45. $(selectInput).val($(this).attr("values"));
  46. hideMenu();
  47. event.stopPropagation();
  48. });
  49. if($(this).find("ul").length>0){
  50. $(this).addClass("menuout");
  51. $(this).hover(function(){
  52. $(this).removeClass("menuout");
  53. $(this).addClass("menuhover");
  54. $(this).find("ul:first").fadeIn("fast")
  55. },function(){
  56. $(this).removeClass("menuhover");
  57. $(this).addClass("menuout");
  58. $(this).find("ul").each(function(){
  59. $(this).fadeOut("fast");
  60. });
  61. });
  62. }else{
  63. $(this).addClass("norout");
  64. $(this).hover(function(){
  65. $(this).removeClass("norout");
  66. $(this).addClass("norhover");
  67. },function(){
  68. $(this).removeClass("norhover");
  69. $(this).addClass("norout");
  70. });
  71. }
  72. });
  73. function hideMenu(){
  74. $this.bOpen=0;
  75. $(".rootmenu").hide();
  76. $coldrop.slideUp("fast");
  77. $(document).unbind("click",hideMenu);
  78. }
  79. function openMenu(){
  80. $coldrop.slideDown("fast");
  81. $this.bOpen=1;
  82. }
  83. $colselbox.click(function(event){
  84. $(this).blur();
  85. if($this.bOpen){
  86. hideMenu();
  87. }else{
  88. openMenu();
  89. $(document).bind("click",hideMenu);
  90. }
  91. event.stopPropagation();
  92. });
  93. $(".rootmenu").each(function(){
  94. $(this).css({"left":135+"px"});
  95. });
  96. }
  97. })(jQuery);