I'm very interested in this post. I go trough the same kind of issue a
couple month ago and I never found the solution.

Thanx !

On Dec 14, 1:48 pm, Karl Delandsheere <[EMAIL PROTECTED]>
wrote:
> Hello everybody!
>
> I'm building an application quite similar to the Mac OSX Finder with a
> massive help from jQuery.
> I've done a lot yet but I'm having some trouble handling the droppable
> event.
>
> Let's see what's in there :
>
> I have some nested lists like this example :
>
> <ul>
>         <li class="category">
>                 <ul>
>                         <li class="category">...
>                                 <ul />
>                         </li>
>                         <li class="item">...</li>
>                         <li class="category">...
>                                 <ul>
>                                         <li class="category">...
>                                                 <ul />
>                                         </li>
>                                         <li class="item">...</li>
>                                 </ul>
>                         </li>
>                 </ul>
>                 <ul>
>                         <li class="category">...
>                                 <ul />
>                         </li>
>                 </ul>
>         </li>
> </ul>
>
> An so on...
>
> <li class="category"> is droppable AND draggable.
> <ul> is only droppable.
> <li class="item"> is only draggable.
>
> Example: When you drag a draggable over a <ul>, nothing has to happen.
> But when you drag a draggable over a <li class="category">, the <ul>
> nested in this <li> has to be opened (like what happen in the OSX
> Finder).
>
> How I wrote this?
>
> First I declared a click handler to open the nested <ul> when clicking
> on a <li class="category">. Here it is:
>
> //Click on li.
> $('li').click(function(e){
>         e.stopPropagation();
>
>         var o = $(this);
>
>         o.siblings('li.expanded, li.info').removeClass('expanded info'); //
> Remove highlights [siblings & children].
>         $('li.expanded, li.info',this).removeClass('expanded info');
>
>         if (o.hasClass('secteur') || o.hasClass('categorie')) //Highlight the
> clicked one, according his class.
>                 o.addClass('expanded');
>         else if (o.hasClass('item'))
>                 o.addClass('info');
>
> });
>
> As I didn't want to repeat myself, I used this click handler in the
> over handler, like this:
>
> over: function( e, ui )
> {
>         if(this.nodeName.toUpperCase() == 'UL')
>                 return;
>
>         $(this).click();
>
> },
>
> So when the draggable is over a <ul>, nothing happens. But when it is
> over a <li class="categorie">, it triggers the <li> click event.
>
> The problem is that when you drag a <li> over a <li class="categorie">
> and it opens his nested <ul>, you have to release your draggable and
> drag it again over the next <li class="categorie">.
>
> What I want to do is "chaining" the triggers and opening several
> categories without having to release the draggable and drag it again.
>
> Thanks a lot for your help and contribution and do not hesitate to
> propose any idea you have, it's been a week that I'm stucked with it.

Reply via email to