2011-09-27 47 views
0

我有一个隐藏的孩子div。点击div将切换孩子的可见度。这很好。是否可以区分点击和选择?

现在用户想要选择孩子中的一些文字。拖动选择工作,但一旦释放鼠标按钮,div关闭(因为inClick处理程序)。

如果可能的话,我仍然希望能够从儿童的任何地方关闭div,因为孩子可能很大(数百行,因此滚动到div切换孩子会很繁琐)。

需要与IE6 +和所有理智的浏览器一起工作。我不能使用jQuery直接:-(但我可以从jQuery的复制代码,所以如果jQuery的有一个解决方案,我克隆它。

建议?

回答

0

你可以做window.getSelection()检查,看它是否包含关闭任何你内心的div之前。

对于IE6,你会想document.selection来代替这个。

注意,这是proprietry IE浏览器,所以你要区分通过的物体检测要使用的方法。

Working Demo

1

你可能对DIV侧面的拨动控制:

toggle.onclick = function() { 
    if (this.className === 'closed') { 
     this.className = ''; 
     content.style.display = ''; 
    } else { 
     this.className = 'closed'; 
     content.style.display = 'none'; 
    } 
}; 

现场演示:http://jsfiddle.net/HcVfW/