2015-09-11 27 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