1

我有div一个隐藏的孩子。单击div将切换孩子的可见性。这很好用。

现在用户想要在孩子中选择一些文本。拖动选择有效,但只要释放鼠标按钮,div就会关闭(因为inClick处理程序)。

如果可能的话,我仍然希望能够div从孩子的任何地方关闭,因为孩子可能很大(数百行,所以滚动到div来切换孩子会很乏味)。

需要使用 IE6+ 和所有健全的浏览器。我不能直接使用 jQuery :-( 但我可以从 jQuery 复制代码,所以如果 jQuery 有解决方案,我会克隆它。

建议?

4

2 回答 2

1

您可以window.getSelection()在关闭内部 div 之前检查它是否包含任何内容。

对于 IE6,您需要将其替换为document.selection.

请注意,这是 IE 的专有功能,因此您需要通过对象检测来区分使用哪种方法。

工作演示

于 2011-09-27T14:37:06.197 回答
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/

于 2011-09-27T14:43:52.287 回答