File tree Expand file tree Collapse file tree
10 - Hold Shift and Check Checkboxes Expand file tree Collapse file tree Original file line number Diff line number Diff line change 107107var Api = ( function ( ) {
108108 // polyfill for jQuery
109109 var $ = ( sel ) => Array . from ( document . querySelectorAll ( sel ) ) ;
110- var boxlist = $ ( '.item input' ) ;
110+ var boxlist = $ ( ) ;
111111 var indexes = { } ; // memory for box clicks
112112 var self ;
113113
118118 arr . forEach ( ( el ) => el . checked = bool ) ;
119119 }
120120
121- function revIndexes ( evt , num ) {
121+ function revIndexes ( evt ) {
122+ var num = boxlist . indexOf ( evt . target ) ;
122123 indexes . last = evt . shiftKey ? indexes . next : num ;
123124 indexes . next = num ;
124125 setChecked ( evt . target . checked ) ; // replicate this state
125126 }
126127
127- function doBinding ( arr ) {
128- arr . forEach ( ( ele , idx ) => {
129- ele . addEventListener ( 'click' , ( evt ) => revIndexes ( evt , idx ) ) ;
130- } ) ;
128+ function detach ( ) {
129+ boxlist . forEach ( ( ele ) => ele . removeEventListener ( 'click' , revIndexes ) ) ;
130+ boxlist . splice ( 0 , Infinity ) ;
131+ return self ;
132+ }
133+
134+ function doBinding ( arg ) {
135+ detach ( ) ; // clean up
136+ var arr = arg . split ? $ ( arg ) : arg ; // query if string
137+ boxlist . push . apply ( boxlist , arr ) ; // swap in new boxlist
138+ boxlist . forEach ( ( ele ) => ele . addEventListener ( 'click' , revIndexes ) ) ;
131139 return self ;
132140 }
133141
134142 self = {
135143 init : doBinding ,
144+ select : $ ,
136145 boxlist, indexes,
137146 } ;
138147
139- return self . init ( boxlist ) ;
148+ return doBinding ( '.item input' ) ;
140149} ( ) ) ;
141-
150+ console . log ( Api ) ;
142151</ script >
143152</ body >
144153</ html >
You can’t perform that action at this time.
0 commit comments