jquery.dragspan.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /**可拖拽span插件,可与zTree的拖拽树配合使用**/
  2. ;(function($){
  3. $.fn.dragspan=$.fn.dragSpan=function(options){
  4. options=$.extend({
  5. errorMsg:'目标对象有误',
  6. //拖拽目标样式
  7. targetClass:'drag-span',
  8. curTarget: null,
  9. curTmpTarget: null,
  10. treeDropHandler:null,
  11. targetTree: null,
  12. buddy:null,
  13. noSel: function() {
  14. try {
  15. window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
  16. } catch(e){}
  17. },
  18. dragTree2Dom: function(treeId, treeNodes) {
  19. return !treeNodes[0].isParent;
  20. },
  21. prevTree: function(treeId, treeNodes, targetNode) {
  22. return !targetNode.isParent && targetNode.parentTId == treeNodes[0].parentTId;
  23. },
  24. nextTree: function(treeId, treeNodes, targetNode) {
  25. return !targetNode.isParent && targetNode.parentTId == treeNodes[0].parentTId;
  26. },
  27. innerTree: function(treeId, treeNodes, targetNode) {
  28. return targetNode!=null && targetNode.isParent && targetNode.tId == treeNodes[0].parentTId;
  29. },
  30. dropTree2Dom: function(e, treeId, treeNodes, targetNode, moveType) {
  31. if (moveType == null) {
  32. var target = null;
  33. if(e.target.className.indexOf(options.targetClass) > -1)
  34. target = e.target;
  35. else if($(e.target).parents("."+options.targetClass).length > 0)
  36. target = $(e.target).parents("."+options.targetClass);
  37. else if($(e.target).find("."+options.targetClass).length > 0)
  38. target = $(e.target).find("."+options.targetClass);
  39. if(options.treeDropHandler&&target){
  40. options.treeDropHandler(target,treeNodes[0]);
  41. }
  42. }
  43. },
  44. //初始化buddy tree的事件绑定
  45. initTreeEventBind:function(){
  46. options.targetTree = $.fn.zTree.getZTreeObj(options.buddy);
  47. if(options.targetTree){
  48. options.targetTree.setting.edit.drag.prev = options.prevTree;
  49. options.targetTree.setting.edit.drag.next = options.nextTree;
  50. options.targetTree.setting.edit.drag.inner = options.innerTree;
  51. options.targetTree.setting.callback.beforeDrag = options.dragTree2Dom;
  52. options.targetTree.setting.callback.onDrop = options.dropTree2Dom;
  53. }
  54. }
  55. },options||{});
  56. return this.each(function(){
  57. if(options.buddy){
  58. $("#"+options.buddy).bind("mouseover",function(){
  59. if(!options.targetTree)
  60. options.initTreeEventBind();
  61. });
  62. }
  63. });
  64. };
  65. })(jQuery);