jQuery UI Selectable

Selezionare e deselezionare elementi in una lista con jQuery UI Selectable

HTML

<div class="scheduler-area">
	<div class="scheduler-container">
		<table class="scheduler">
			<thead>
				<tr>
					<th class="header">
						<div class="header-name">01</div>
					</th>
					<th class="header">
						<div class="header-name">02</div>
					</th>
					<th class="header">
						<div class="header-name">03</div>
					</th>
					<th class="header">
						<div class="header-name">04</div>
					</th>
					<th class="header">
						<div class="header-name">05</div>
					</th>
					<th class="header">
						<div class="header-name">06</div>
					</th>
					<th class="header">
						<div class="header-name">07</div>
					</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
				</tr>
				<tr>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
				</tr>
				<tr>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
				</tr>
				<tr>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
				</tr>
				<tr>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
				</tr>
				<tr>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
					<td class="item"></td>
				</tr>
				<tr>
					<td...

CSS

/* Table Styles */
.scheduler-area  {
	position: relative;
	border: 1px solid #000;
	padding-top: 37px;
	background: #777777;
	overflow: hidden;
	background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzc3Nzc3NyIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM0OTQ5NDkiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
	background: -moz-linear-gradient(top, #777777 0%, #494949 100%);
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#777777), color-stop(100%,#494949));
	background: -webkit-linear-gradient(top, #777777 0%,#494949 100%);
	background: -o-linear-gradient(top, #777777 0%,#494949 100%);
	background: -ms-linear-gradient(top, #777777 0%,#494949 100%);
	background: linear-gradient(to bottom, #777777 0%,#494949 100%);
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#777777', endColorstr='#494949',GradientType=0 );
}

.scheduler-container {
  overflow-y: auto;
  height: 200px;
}
.scheduler {
  border-spacing: 0;
  width:100%;
}
.scheduler .item + .item {
  border-left:1px solid #777777;
}
.scheduler .item, .header {
  border-bottom:1px solid #777777;
  background: #F7F7F7;
  color: #000;
  padding: 25px;
}
.scheduler .header {
  height: 0;
  line-height: 0;
  padding-top: 0;
  padding-bottom: 0;
  color: transparent;
  border: none;
  white-space: nowrap;
  border-left: 1px solid #777777;
  border-bottom: none;
}

.scheduler .header:FIRST-CHILD {
  border-left: none;
}
.scheduler .header .header-name{
  position:...

JavaScript

var currentCol;
	 $(".scheduler-container").selectable({
		        filter: ".item",
		        start: function(event, ui) {
		            $(".item").removeClass("ui-selected");
		        },
		        stop: function(event, ui) {

		            //Reset selector. 
		            currentCol = undefined;
		        },
		        selecting: function(event, ui) {

		            if (currentCol === undefined) {
		                currentCol = $(ui.selecting).index();
		            }

		            var nthChild = parseInt(currentCol) + 1; //Add one as nthChild is not zero index
		            for (var i = 1; i <= $(".scheduler").children('tbody').children('tr').children('.item').length; i++) {

		                if (i != nthChild) {
		                    $(".item.ui-selecting:nth-child(" + i + ")").each(function() {
		                        $(this).removeClass("ui-selecting");
		                    });
		                }
		            }
		            ;
		        }
	 });