2011-07-08 40 views
0

我有这个代码,当按shift键时选择多行。但是每当选择开始时,表格文本总是被选中,因此我尝试添加disableSelection();到表格并且在鼠标移动后重新启用它。但是,它不起作用,文本仍然被选中。任何帮助是极大的赞赏。选择行禁用/重新启用文本选择

$(".tableGrid tr").live("click", function(event) { 
    if(event.shiftKey) { 
     $(".tableGrid").disableSelection(); 
    } 
    var tableRow = $(this).closest("tr").prevAll("tr").length + 1; 
    if ($(this).hasClass("rowSelected")) { 
     event.shiftKey ? $(this).removeClass("rowSelected") : $(".tableGrid tr").removeClass("rowSelected"); 
    } 
    else { 
     if(!event.shiftKey) { 
      $(".tableGrid tr").removeClass("rowSelected"); 
     } 
     $(this).addClass("rowSelected"); 
    } 

    if(event.shiftKey) { 
     var start = Math.min(tableRow, lastSelected); 
     var end = Math.max(tableRow, lastSelected); 
     for(var i=start; i<end; i++) { $(".tableGrid").find("tr").eq(i).addClass("rowSelected"); } 
    } 
    else { 
     lastSelected = $(this).closest("tr").prevAll("tr").length + 1; 
    } 
}).mouseup(function() { 
    $(".tableGrid").enableSelection(); 
}); 
+0

我已删除鼠标松开事件,因为我意识到它不应该与click事件结合。 – pakito

回答

0

要禁用特定的DOM元素的文本选择,你可以试试这个:

var element = document.getElementById('content'); 
element.onselectstart = function() { return false; } // ie 
element.onmousedown = function() { return false; } // mozilla 
+0

谢谢凯尔,我试着添加你的代码,但现在连我的表格行都没有被选中。 – pakito