Hmmm... I tried using dragCheck(false) but it doesn't unbind the events, I had to unbind manually.
2009/4/12 Ricardo <ricardob...@gmail.com> > > Sure! I have a few other plugins I also want to upload, I'll do that. > > I took the time to rewrite it more carefully. No more binding/ > unbinding, a single var, all namespaced and bugs ironed out (if you > put the cursor away while holding the button, the mouseover would > remain active even after mouseup). > > The advantage of namespacing is you can easily remove all event > handlers. I included that in the plugin, in the example you can use $ > ('ul').dragCheck(false) to disable it completely. > > http://jsbin.com/amoxi/edit > > cheers, > - ricardo > > On Apr 12, 9:48 am, Lwangaman <donjohn.f...@gmail.com> wrote: > > @Ricardo > > Do you think it could be useful to add this to the jquery plugins at > > plugins.jquery.com? I'd say it could be put under your name because > > you did all the big work! > > > > On 12 Apr, 14:35, Lwangaman <donjohn.f...@gmail.com> wrote: > > > > > Ok that works better, I just changed "clicked.checked = !isChecked" to > > > "clicked.checked = isChecked": > > > > >http://jsbin.com/idihi/edit > > > > > On 12 Apr, 08:11, Ricardo <ricardob...@gmail.com> wrote: > > > > > > The problem with your fix is that the event target for the mouseup is > > > > not the same as the mousedown. You can resolve that by saving the > > > > clicked checkbox in a var, and because of event order the change has > > > > to be made on 'click' rather than mouseup. > > > > > >http://jsbin.com/asizu/edit > > > > > > Sorry for the bugs, this was written rather quickly, I hope it works > > > > now :) > > > > > > On Apr 11, 11:30 am, Lwangaman <donjohn.f...@gmail.com> wrote: > > > > > > > Ok I tried to touch up the code a little to fix that, here's my > > > > > example: > > > > > > >http://jsbin.com/iyubi/edit > > > > > > > Now, with a single click, the value on mouseup is reversed to keep > it > > > > > as it was with mousedown. But, when you do a drag, the mouseup of > the > > > > > last checkbox is not canceled or reversed... I suppose it would be > > > > > enough to cancel $(this)'s mouseup, but how would you refer to > $(this) > > > > > from within the $boxes.bind('mouseover')? > > > > > > > On 11 Apr, 16:07, Lwangaman <donjohn.f...@gmail.com> wrote: > > > > > > > > Hmm, just noticed one problem though... A single click on a > checkbox > > > > > > is supposed to work too, but with this code as soon as you > mouseup the > > > > > > value goes back the other way... You have to drag off in order to > keep > > > > > > the value in there... > > > > > > > > On 11 Apr, 06:21, Ricardo <ricardob...@gmail.com> wrote: > > > > > > > > > I think you already got the .dc namespacing thing, so: the > mousedown > > > > > > > is not being bound to the checkbox, but to the container > element (the > > > > > > > table, or in my example below, the UL). When you click a > checkbox the > > > > > > > mousedown event will bubble up to the container and fire this > handler. > > > > > > > > > As I expected my code had some flaws a few typing errors, see > it fixed/ > > > > > > > working here: > > > > > > > > >http://jsbin.com/edabo/edit > > > > > > > > > I added the ability to specify a selector for the checkboxes, > that way > > > > > > > you can skip the ones you don't want. In case it's not provided > all > > > > > > > checkboxes are used by default. > > > > > > > > > cheers, > > > > > > > - ricardo > > > > > > > > > On Apr 10, 8:17 pm, Lwangaman <donjohn.f...@gmail.com> wrote: > > > > > > > > > > Ok first of all thanks for taking interest! > > > > > > > > Then, I've tried going through your code and applying it, and > I have a > > > > > > > > few questions: > > > > > > > > -- Besides the mouseover.dc that I didn't get either... > > > > > > > > -- I'm supposing that $boxes would be a variable where all > the > > > > > > > > checkboxes that are applicable have been stored previously? > Yet, if > > > > > > > > you build it as a "plugin" you have no way of defining which > > > > > > > > checkboxes are to comprised (unless this functionality is > built into > > > > > > > > the plugin using data passed through parameters, I suppose). > > > > > > > > -- Then I don't quite understand what the "mousedown" is > being bound > > > > > > > > to. In my example (which was not built as a plugin, but I > suppose a > > > > > > > > plugin or defined function would be even better because it's > much more > > > > > > > > flexible and anyone can download it and use it), the > "mousedown" was > > > > > > > > being bound to all the cells that had checkboxes in them, and > I was > > > > > > > > determining that through the class I had given them > > > > > > > > "mychkbox" (because I didn't want some of the checkboxes > included, > > > > > > > > since they do not have an active state; the table has names, > > > > > > > > addresses, emails, and those that don't have an email have an > inactive > > > > > > > > checkbox). I was also trying to follow cross-browser.com's > way of > > > > > > > > listening to the mousedown on the cell containing the > checkbox rather > > > > > > > > than on the checkbox itself, making the whole click-drag > thing a lot > > > > > > > > more user-friendly. > > > > > > > > > > On 10 Apr, 20:36, jay <jay.ab...@gmail.com> wrote: > > > > > > > > > > > Just curious.. What is the difference between mouseover.dc > and > > > > > > > > > mouseover? > > > > > > > > > > > On Apr 10, 1:44 pm, Ricardo <ricardob...@gmail.com> wrote: > > > > > > > > > > > > This (untested) is how I envision the code for that: > > > > > > > > > > > > $.fn.dragCheck = function(){ > > > > > > > > > > //this == the current jQuery element > > > > > > > > > > return this.each(function(){ > > > > > > > > > > > > //this == current element in the loop (table etc) > > > > > > > > > > $(this).bind('mousedown', function(e){ > > > > > > > > > > > > //don't do anything if you didn't click a > checkbox > > > > > > > > > > if ( !$(e.target).is(':checkbox') ) > > > > > > > > > > return true; > > > > > > > > > > > > //get the clicked checkbox state > > > > > > > > > > isChecked = e.target.checked; > > > > > > > > > > //apply it to all other checkboxes on mouseover > > > > > > > > > > $boxes.bind('mouseover.dc', function(){ > > > > > > > > > > this.checked = isChecked; > > > > > > > > > > }); > > > > > > > > > > > > }).bind('mouseup', function(e){ > > > > > > > > > > //cancel the mouseover action > > > > > > > > > > $boxes.unbind('mouseover.dc'); > > > > > > > > > > }); > > > > > > > > > > > > }; > > > > > > > > > > > > $('#table1').dragCheck(); > > > > > > > > > > > > cheers, > > > > > > > > > > - ricardo > > > > > > > > > > > > On 9 abr, 17:15, Lwangaman <donjohn.f...@gmail.com> > wrote: > > > > > > > > > > > > > Ok I resolved the "cannot assign to a function result" > problem by > > > > > > > > > > > putting the value assignment into a "function(){}": > > > > > > > > > > > > > 48 $("td.mychkbox").each( > > > > > > > > > > > 49 function(){ > > > > > > > > > > > 50 $(this).bind( > > > > > > > > > > > 51 "mouseover", > > > > > > > > > > > 52 function(){ > > > > > > > > > > > 53 if (gCheckedValue != null){ > > > > > > > > > > > 54 var eccomi = this; > > > > > > > > > > > 55 var eccoti = > $(eccomi).find("input:checkbox"); > > > > > > > > > > > 56* function(){$(eccoti).attr("checked") = > gCheckedValue;} > > > > > > > > > > > 57 } > > > > > > > > > > > 58 }); > > > > > > > > > > > 59 }); > > > > > > > > > > > > > Now I don't get any errors, but the event assignments > don't seem to be > > > > > > > > > > > working together correctly... > > > > > > > > > > > Basically what's supposed to happen is this: > > > > > > > > > > > 1 - "onclick" event of the checkboxes is canceled since > the clicking > > > > > > > > > > > and dragging is being assigned to the table cells that > contain them > > > > > > > > > > > 2 - the table cells themselves don't actually have on > "onclick" event, > > > > > > > > > > > because the value is given to the checkboxes with the > "onmousedown" > > > > > > > > > > > and especially the "onmouseover" event. > > > > > > > > > > > 3 - "onmousedown" gives the variable "gCheckedValue" a > value, either > > > > > > > > > > > of "true" or of "false" (depending on the actual state > of the > > > > > > > > > > > checkbox, so if it is unchecked it will get checked and > vice-versa), > > > > > > > > > > > and "onmouseup" empties "gCheckedValue" of any value. > So as long as > > > > > > > > > > > the mouse is down, "gCheckedValue" has a value to give > to any of the > > > > > > > > > > > checkboxes with the "onmouseover" event, but as soon as > the mouse > > > > > > > > > > > button is released it no longer has a value so the > "onmouseover" event > > > > > > > > > > > will no longer effect any of the checkboxes until the > mousebutton is > > > > > > > > > > > pressed again. > > > > > > > > > > > > > So the value of "gCheckedValue" is set in the > "mousedown" event, and > > > > > > > > > > > is transmitted in the "mouseover" event. > > > > > > > > > > > > > And yet the code doesn't seem to be working correctly. > The current > > > > > > > > > > > value of the cell is detected correctly (I've gotten it > through an > > > > > > > > > > > alert), it's contrary is correctly set in > "gCheckedValue" (I've gotten > > > > > > > > > > > that through an alert too), but the new value is not > being set in the > > > > > > > > > > > checkbox... In fact click sets no value, click and hold > sets no value, > > > > > > > > > > > click and drag (mouseover the other checkboxes / cells) > set no > > > > > > > > > > > value... > > > > > > > > > > > > > On 9 Apr, 14:23, Lwangaman <donjohn.f...@gmail.com> > wrote: > > > > > > > > > > > > > > I thought I'd undertake the endeavour of translating > into jquery the > > > > > > > > > > > > neat little "click-n-drag checkboxes" functionality > of cross- > > > > > > > > > > > > browser.com's X-library. This functionality allows > for multiple > > > > > > > > > > > > checkbox selection or de-selection by simply clicking > on one of them > > > > > > > > > > > > and then dragging the mouse over the others. > > > > > > > > > > > > > > I began mentioning this in another post, but I > figured that perhaps a > > > > > > > > > > > > new post with the right title would be better. Rather > than re-post all > > > > > > > > > > > > the code though, here's a reference to the message > where the full code > > > > > > > > > > > > of both the X-library functions and my attempted > translation of them > > > > > > > > > > > > is posted: > > > > > > > > > > > > > > > http://groups.google.com/group/jquery-en/msg/0f38d747d97cf701 > > > > > > > > > > > > > > I doesn't quite seem to work though, none of my > checkboxes are getting > > > > > > > > > > > > selected either on click or on drag. Any javascript - > jquery experts > > > > > > > > > > > > have any ideas on what needs to be perfected? > > > > > > > > > > > > > > When I run it in Internet Explorer, the debugger > gives me this > > > > ... > > > > read more ยป > > > -- don John D'Orazio Vicario Parrocchiale San Lino Via Cardinal Garampi, 60 00167 Roma tel. 06-6274622 cell. 333/2545447