2011-02-15 4 views
6

나는 Jquery Selectable을 사용합니다. 그러나 사용자는 컨트롤 버튼을 누르고 있지 않아도 여러 항목을 선택할 수있는 어쨌든 항목을 선택하기 위해 컨트롤 버튼을 누르고 있어야합니까?Jquery 컨트롤을 사용하지 않고 선택 가능

다른 말로하면 : 사용자가 항목을 클릭하고 다시 클릭하여 선택을 취소 할 수있게하려고합니다.

+0

올가미 (상자 드래그) 또는 마우스 클릭은 단일/인접 다중 요소를 선택합니다. 비 연속 선택의 경우에만 제어가 필요합니다. – VinayC

답변

4

사용자가 요소를 클릭 할 때 "selected"클래스를 추가하고 다시 클릭하면 클래스를 제거 할 수 있습니다.

$(".selectable").click(function(e) { 
    $(this).toggleClass("selected"); 
}); 
0

마우스 왼쪽 버튼을 사용하여 여러 항목을 선택할 수도 있습니다. 단, 인접 항목 만 선택할 수 있습니다.

+0

나는 내 질문을 다시 말해야한다고 생각한다. 지금 보아. –

0

가장 쉬운 것은 당신의 선택 요소에 selected 클래스를 바꾸는 jQuery를 클릭 핸들러를 구현하는 것입니다. 그런 다음 적절하게 selected으로 스타일을 지정하십시오. jQuery Selectable은 귀하의 경우보다 도움이되는 방해물입니다.

4

사용자 지정 이벤트 처리기 집합을 사용하여 선택 및 선택 취소 동작을 제어 할 수 있습니다. 이 핸들러 세트를 사용하면 선택하지 않고 범위 선택을 수행하지 않고 다시 클릭하지 않으면 아무 것도 선택 해제되지 않습니다. if (event.detail == 0) { 및 관련 문을 제거하면 범위 선택이 범위 반전과 같이 작동합니다. 선택한 범위의 항목은 선택 취소되며 그 반대의 경우도 마찬가지입니다.

var _selectRange = false, _deselectQueue = []; 
$(function() { 
    $("#selectable").selectable({ 
     selecting: function (event, ui) { 
      if (event.detail == 0) { 
       _selectRange = true; 
       return true; 
      } 
      if ($(ui.selecting).hasClass('ui-selected')) { 
       _deselectQueue.push(ui.selecting); 
      } 
     }, 
     unselecting: function (event, ui) { 
      $(ui.unselecting).addClass('ui-selected'); 
     }, 
     stop: function() { 
      if (!_selectRange) { 
       $.each(_deselectQueue, function (ix, de) { 
        $(de) 
         .removeClass('ui-selecting') 
         .removeClass('ui-selected'); 
       }); 
      } 
      _selectRange = false; 
      _deselectQueue = []; 
     } 
    }); 
}); 

While it lasts, here's a jsfiddle example.

+0

잘 했어! 바이올린 주셔서 감사합니다. –

+0

이 솔루션은 나를 위해 가장 잘 작동했습니다. 여러 토글, 올가미 셀렉트를 지원하며 프로그래밍 방식으로 프레임 워크 플러그인과 통합 할 수 있습니다. metaKey = true 인 CTRL 솔루션은 JQuery UI 1.11.4에서 작동하지 않았습니다. – lubosdz

관련 문제