多选框伴侣

Ctrl+Alt点击全选多选框,Alt加鼠标悬停选择多选框,Shift选择两个多选框之间的所有多选框

当前为 2017-03-01 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Select All Checkboxes
  3. // @name:zh-CN 多选框伴侣
  4. // @name:zh-TW 多選框伴侶
  5. // @namespace hoothin
  6. // @version 0.5
  7. // @description A mate for checkbox, select all checkboxes by press Ctrl+Alt+mouse1, or select checkboxes with mouse over by press Alt, or select checkboxes between 2 marks by press Shift.
  8. // @description:zh-CN Ctrl+Alt点击全选多选框,Alt加鼠标悬停选择多选框,Shift选择两个多选框之间的所有多选框
  9. // @description:zh-TW Ctrl+Alt點擊全選多選框,Alt加鼠標懸停選擇多選框,Shift選擇兩個多選框之間的所有多選框
  10. // @author Hoothin
  11. // @include http*://*/*
  12. // @require http://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js
  13. // @grant GM_registerMenuCommand
  14. // @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=rixixi@sina.com&item_name=Greasy+Fork+donation
  15. // @contributionAmount 1
  16. // ==/UserScript==
  17.  
  18. (function() {
  19. 'use strict';
  20. var type=navigator.appName;
  21. var lang = null;
  22. if (type=="Netscape"){
  23. lang = navigator.language;
  24. }else{
  25. lang = navigator.userLanguage;
  26. }
  27. var langStr = lang.substr(0,2);
  28. if (langStr == "zh"){
  29. langStr = "全选";
  30. }else{
  31. langStr = "SelectAll";
  32. }
  33. GM_registerMenuCommand(langStr, selectAll);
  34.  
  35. function selectAll(){
  36. $("input:checkbox:enabled").click();
  37. }
  38.  
  39. var preObj;
  40. $(document).on("mousedown","input:checkbox:enabled",function (event) {
  41. if(!event.shiftKey&&event.altKey&&event.ctrlKey){
  42. $("input:checkbox:enabled").click();
  43. this.click();
  44. }else if(event.shiftKey&&!event.altKey&&!event.ctrlKey){
  45. var curParent=this;
  46. var preParent=preObj;
  47. for(var i=0;i<5;i++){
  48. curParent=curParent.parentNode;
  49. preParent=preParent.parentNode;
  50. if(!curParent||!preParent)return;
  51. if(curParent==preParent){
  52. var target=this;
  53. var find=false;
  54. $(curParent).find("input:checkbox:enabled").each(function(){
  55. if(this==preObj||this==target){
  56. if(find){
  57. find=false;
  58. return;
  59. }
  60. find=true;
  61. }else if(find){
  62. this.click();
  63. }
  64. });
  65. break;
  66. }
  67. }
  68. }
  69. preObj=this;
  70. });
  71. $(document).on("mouseover","input:checkbox:enabled",function (event) {
  72. if(!event.shiftKey&&event.altKey&&!event.ctrlKey){
  73. this.click();
  74. }
  75. });
  76. })();