jQuery UI Selectable: Bind to first-generation children only
Asked Answered
P

1

6

I have a group of elements which I want to be selectable.

jQuery UI Selectable seems to be the right tool, but I run into problems where the functionality seems to be bound to all of the child elements, with all the classes being applied.

I want to ensure that the classes and binding of events is only applied to the first generation of children, and not their nested elements.

Here's a jsFiddle which should help illustrate what I'm trying to prevent: http://jsfiddle.net/ncKEW/

The Code HTML

<div id="group">
    <div class="unit">
        <h2>Title</h2>
        <div class="content">
            Dulce et decorum
        </div>
    </div>
    <div class="unit">
        <h2>Title</h2>
        <div class="content">
            Dulce et decorum
        </div>
    </div>
    <div class="unit">
        <h2>Title</h2>
        <div class="content">
            Dulce et decorum
        </div>
    </div>
    <div class="unit">
        <h2>Title</h2>
        <div class="content">
            Dulce et decorum
        </div>
    </div> </div>

js

$(document).ready(function(){
    $('#group').selectable();
});

Css (just for illustration)

#group{padding: 12px;}
h2{font-size: 1.2em;margin: 2px 0;}
.unit{background: blue;}
.ui-selected{background: yellow;}
Picardi answered 26/4, 2013 at 10:56 Comment(1)
Maybe I am too stupid, but I don't understand the problem...Phosphorus
L
12

use the filter option.

$(document).ready(function(){
    $('#group').selectable({
        filter: " > div"
    });
});

Demo: Fiddle

Leninist answered 26/4, 2013 at 11:15 Comment(1)
Perfect! I should have just sat and read the documentation until I understood it, been annoying myself a while now with this. Thanks.Picardi

© 2022 - 2024 — McMap. All rights reserved.