2015-09-11 82 views
2

我創建了一個基本的行點擊和拖動選擇功能。然而,這個問題是在列上點擊並拖動來打開和關閉它們。我正在尋找某種類型的return falsestopPropagation某種但我無法讓這些工作。防止內部div觸發外部事件

return false確實有助於防止文本選擇,但它並不妨礙列選擇影響行選擇。

爲了演示,http://jsfiddle.net/sjwcztre/,嘗試從右側選擇行 - 沒有問題。但儘量選擇在那裏列文本是存在的行 - 它會靠不住

var isMouseDown = false; 

$('.row').each(function() { 
    $(this).mousedown(function() { 
     isMouseDown = true; 
     rowClickHandler(this); 
     console.log('mdown'); 
     return false; 
    }) 
     .mouseover(function() { 
     if (isMouseDown) rowClickHandler(this); 
    }); 

    $(document).mouseup(function() { 
     isMouseDown = false; 
    }); 
}); 

function rowClickHandler(obj) { 
    $(obj).toggleClass('highlight'); 
} 
+5

像http://jsfiddle.net/j08691/sjwcztre/3/? – j08691

回答

1

Check this,看它是否適合你。基本上你需要爲你的行的孩子創建事件,並以不同的方式處理它們,增加一個hoverChild控制變量有助於防止從父母再次懸停。

+0

我讚揚並讚賞你的努力,但'j08691'的一行css-answer很有史詩性。 – BarryBones41

+0

我也對它印象深刻。我不知道該css屬性的存在以及它被所有當前瀏覽器支持的事實(IE 10和以前不支持) – marche