2012-03-19 64 views
1

什麼是禁用文本選擇的div和它的所有子元素的語法是什麼。我使用$(「#MyContent).disableSelection()來禁用下面的代碼中的所有文本,它可以在firefox中工作,並且一次禁用所有這三行。Javascript/Jquery語法來禁用Div和所有子元素上的文本選擇?

在IE瀏覽器9中不起作用(),$(「#text2).disableSelection(),$(」#text3).disableSelection(),所以要禁用所有的文本我必須做$(「#text1).disableSelection()什麼是一次禁用或應用到所有兒童的語法?

<div id="MyContent"> 
    <div id="text1">Hello World</div> 
    <div id="text2">Goodbye</div> 
    <div id="text3">Asdf</div> 
</div> 
+0

@gideon,那些不完全相同,因爲他的問題是解決有關Internet Explorer的問題。 – 2012-03-19 03:31:37

+0

@奧斯汀是的,我很抱歉雷,是的,我誤解了這個問題。 – gideon 2012-03-19 03:36:57

回答

1

這個工作對我來說:

$('#MyContent').children().each(function(i, c) { 
    disableSelection(c); 
}); 

function disableSelection(target) { 
    console.debug(target); 

    if (typeof target.onselectstart != "undefined")    // For IE 
     target.onselectstart = function() { return false }; 
    else if (typeof target.style.MozUserSelect != "undefined") // For Firefox 
     target.style.MozUserSelect = "none"; 
    else              // All other routes (Opera, etc.). 
     target.onmousedown = function() { return false }; 

    target.style.cursor = "default"; 
} 

演示http://jsfiddle.net/9vLFD/4/

+0

大部分都適用。在IE中,如果您開始選擇MyContent外部的文本並將其拖入MyContent中,您仍然可以選擇MyContent內部的文本。 – Ray 2012-03-19 16:51:49

0

你可以嘗試

$('#MyContent').children().each(function(i,c){ 
    $(c).disableSelection(); 
}); 
+0

這似乎沒有工作。 – Ray 2012-03-19 03:36:23

+0

這甚至需要通過'each'調用嗎?也許只是'.children()。disableSelection()'應該是好的。或強大的捕獲所有:'$('#MyContent *')。disableSelection()'!!!/evillaugh – 2012-03-19 03:41:12

+0

謝謝,但那些在IE瀏覽器不工作。 – Ray 2012-03-19 03:47:22

相關問題