首页 > 语言 > JavaScript > 正文

jQuery实现拖拽效果插件的方法

2024-05-06 16:17:28
字体:
来源:转载
供稿:网友

这篇文章主要介绍了jQuery实现拖拽效果插件的方法,较为详细的分析了jQuery拖拽效果的实现技巧,需要的朋友可以参考下

本文实例讲述了jQuery实现拖拽效果插件的方法。分享给大家供大家参考。具体如下:

下面的jQuery插件允许你通过鼠标右键点击拖动overflow的元素,这个插件可以在移动设备上运行
 

  1. /** 
  2. * jQuery Drag and Scroll 
  3. * 
  4. * Copyright (c) 2012 Ryan Naddy (ryannaddy.com) 
  5. * Dual licensed under the MIT and GPL licenses: 
  6. * http://www.opensource.org/licenses/mit-license.php 
  7. * http://www.gnu.org/licenses/gpl.html 
  8. */ 
  9. (function($){ 
  10. var down = false
  11. var prevX = 0; 
  12. var prevY = 0; 
  13. var x = 0; 
  14. var y = 0; 
  15. var px = 0; 
  16. var py = 0; 
  17. var lastPX = -1; 
  18. var lastPY = -1; 
  19. var $target = null
  20. var $me = null
  21. var $selector = ""
  22. var settings = { 
  23. mouseButton: 3, 
  24. context: false
  25. selectText: false 
  26. }; 
  27. $.fn.dragScroll = function(options){ 
  28. settings = $.extend(settings, options); 
  29. $selector = $(this).selector; 
  30. $(this).contextmenu(function(){ 
  31. return false
  32. }).bind("mousedown touchstart"function(e){ 
  33. $me = $(this); 
  34. e = event.touches ? event.touches[0] : e; 
  35. $target = $(e.target); 
  36. $target = $target.closest($selector); 
  37. if(settings.viewPort){ 
  38. if(!settings.context){ 
  39. $me.contextmenu(function(){ 
  40. return false
  41. }); 
  42. if(!settings.selectText){ 
  43. $me.attr('unselectable''on').css('user-select''none').on('selectstart'false); 
  44. $me = $me.closest($selector); 
  45. if($target && $me.attr("id") != $target.attr("id")){ 
  46. return false
  47. if(e.which == settings.mouseButton || event.touches){ 
  48. $me.css("cursor""move"); 
  49. down = true
  50. px = $me.scrollLeft(); 
  51. py = $me.scrollTop(); 
  52. x = px + e.pageX; 
  53. y = py + e.pageY; 
  54. prevX = x; 
  55. prevY = y; 
  56. return true
  57. }).bind("mouseup touchend"function(e){ 
  58. $me = $(this); 
  59. e = event.touches ? event.touches[0] : e; 
  60. $me.css("cursor""auto"); 
  61. down = false
  62. }).bind("mousemove touchmove"function(e){ 
  63. $me = $(this); 
  64. $me = $me.closest($selector); 
  65. e = event.touches ? event.touches[0] : e; 
  66. if((e.which == settings.mouseButton || event.touches) && down){ 
  67. if(event.touches){ 
  68. event.preventDefault(); 
  69. if($target && $me.attr("id") != $target.attr("id")){ 
  70. return false
  71. $me.css("cursor""move"); 
  72. px = $me.scrollLeft(); 
  73. py = $me.scrollTop(); 
  74. x = px + e.pageX; 
  75. y = py + e.pageY; 
  76. $me.scrollLeft(px + (-(x - prevX))); 
  77. $me.scrollTop(py + (-(y - prevY))); 
  78. prevX = x - (x - prevX); 
  79. prevY = y - (y - prevY); 
  80. if(lastPX == px) 
  81. prevX = x; 
  82. if(lastPY == py) 
  83. prevY = y; 
  84. lastPX = px; 
  85. lastPY = py; 
  86. return true
  87. }); 
  88. return this
  89. })(jQuery); 

希望本文所述对大家的jQuery程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选