1

I would like to create a multiselect on unordred list when clicking on on <li> items and holding ctrl key, and when clicking on <li> without holding the ctrl it just select the current item and deselect others.

<div class="list">
    <ul class="level0">
        <li class="level1">text1</li>
        <li class="level1">text2</li>
        <li class="level1">text3</li>
        <li class="level1">text4</li>
        <li class="level1">text5</li>
    </ul>
    <ul class="level0">
        <ul class="level1">
            <li class="level2">text1</li>
            <li class="level2">text2</li>
            <li class="level2">text3</li>
            <li class="level2">text4</li>
            <li class="level2">text5</li>
        </ul>
        <ul class="level1">
            <li class="level2">text1</li>
            <li class="level2">text2</li>
            <li class="level2">text3</li>
            <li class="level2">text4</li>
            <li class="level2">text5</li>
        </ul>
    </ul>
</div>

Any idea to do this?

Cerbrus
  • 70,800
  • 18
  • 132
  • 147
NoOneElse
  • 1,101
  • 2
  • 11
  • 15

1 Answers1

4

You can use jquery to check if a modifier key was pressed when listening to an event. You can check for the following keys on the event object passed to the handler:

altKey - alt/option key
ctrlKey - control key
shiftKey - shift key
metaKey - control key on PCs, control and/or command key on Macs

Example:

var lis = $('.list li').click(function(e){
    if(!e.ctrlKey) {
        // Ctrl not pressed, clear previous selections
         lis.removeClass("selected");      
    }
    $(this).addClass("selected");    
});

Working fiddle: http://jsfiddle.net/AM2Sk/

Hless
  • 3,326
  • 20
  • 22