2013-11-01 93 views
0

我一直在拼湊各種SO的答案關於這個話題,但我不能弄明白。 This answer顯示如何選擇多個項目,但我無法弄清楚如何添加正在按下的shift鍵的條件。jQuery可選擇多個項目

拖動多個項目選中它們,這很好。點擊單個項目選擇該項目,這很好。但是如果按下shift鍵,點擊多個項目應該全部選中它們,再次點擊它們應該取消選擇它們。

這是fiddle

HTML

<div id="canvas"> 
    <div class="elemContainer ui-selected" style="position: absolute; top: 50px; 
    left: 50px; width: 100px; height: 100px;">  
     <div class="elem" style="position: absolute; width: 100%; height: 100%; 
     background: pink;"></div> 
    </div> 

    <div class="elemContainer ui-selected" style="position: absolute; top: 50px; 
    left: 50px; width: 100px; height: 100px;">  
     <div class="elem" style="position: absolute; width: 100%; height: 100%; 
     background: coral;"></div> 
    </div> 
</div> 

的Javascript

$('#canvas').selectable(); 

$('.elemContainer').draggable(); 

// Fix single click selection 
$(".elemContainer").click(function() { 
    if (!$(this).hasClass("ui-selected")) { 
     $(this).addClass("ui-selected").siblings().removeClass("ui-selected"); 
    } 
}) 

回答

1

看到這個更新小提琴:http://jsfiddle.net/5ayrW/7/

.click(function(e) { 
if (e.shiftKey) { 

兩個,單擊並按住Shift並單擊現在調用福它爲自己或兄弟姐妹添加類。

+0

感謝隊友,真棒。當我點擊一個選定的元素時,它應該被取消選中。我一直在搞if語句,但我無法弄清楚:( – colmtuite

+0

現在的問題是,正常的點擊也適用於Shift +點擊。只需將點擊功能放在shift +點擊其他條件現在如果你拖動選擇兩個元素,什麼都不會被選中...... – ggzone

+0

啊,我看到。看起來像這兩個(可拖動和可選擇的)彼此衝突。nevermind。jquery有足夠的能力來處理這個問題:通過添加一個可拖動的:start函數來更新小提琴,以增加一個選擇,這裏強烈推薦crossbrowsertests – colmtuite