2011-04-10 48 views
3

我有一個基本的表格,是這樣的:如何在棘手的情況下禁用表格中的文本選擇?

<table> 
    <tbody> 
     <tr> 
      <td>Column 1</td> 
      <td>Column 2</td> 
     </tr> 
    </tbody> 
</table> 

在行我有jQuery的雙擊功能:

$('tr').live('dblclick',function(){ 
    dosomething(); 
    return false; 
}); 

我也有使用鼠標按下/ up功能插件叫做tablednd在行上。 雙擊會導致單元格上的文本選擇。

我該如何預防?

回答

8

您不能使用select()事件,因爲它僅限於輸入元素。

相反,嘗試對selectstart事件preventDefault() ...

$('tr').bind('selectstart', function(event) { 
    event.preventDefault(); 
}); 

jsFiddle

或者,你可以使用CSS ...

tr { 
    -webkit-touch-callout: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: none; 
    -ms-user-select: none; 
    user-select: none; 
} 
+0

謝謝,它在正常的瀏覽器上工作,但沒有ie8(如果我禁用了tablednd插件,它也在ie8上工作) – passatgt 2011-04-10 11:28:56

+0

@passatgt [http://stackoverflow.com/questions/880512/防止文本選擇-後雙擊/ 880518#880518)。 – alex 2011-04-10 11:41:30

0

嘗試改變

$('tr').live('dblclick',function(){ 
    dosomething(); 
    return false; 
}); 

$('tr').live('dblclick',function(e){ 
    e.preventDefault(); 
    dosomething(); 
    return false; 
}); 

這應該防止雙擊做任何事情,瀏覽器將在默認情況下做的。您應該在所有瀏覽器中測試此代碼,但不知道它是否可以在任何地方使用。

+0

這不是爲我工作,可能是因爲tablednd插件。 – passatgt 2011-04-10 11:29:20

相關問題