2013-04-17 5 views
0

Есть ли способ, которым я могу получить выделенный текст в таблице, используя jquery после _mouseStop?Получение выделенного текста из таблицы в JQuery

<table id='grid' class='TableStyle'> 

    <tr> 
     <td class='cellGrid'>F</td>                  
     <td class='cellGrid'>W</td> 
    </tr> 

    <tr> 
     <td class='cellGrid'>F</td>                  
     <td class='cellGrid'>W</td> 
    </tr> 

</table> 

Когда выделен текст, класс этого td, изменяется на cellHighlight.

Я думаю, что мне нужно зациклиться в сетке таблицы и найти те, что их класс cellHighlight, а затем использовать .text(), чтобы получить значение?

Я прав? Если да, есть ли способ сделать это?

Благодаря

+0

Вам нужен только один текст ячейки щёлкать или несколько ячеек которые выделены? и что именно вы хотите сделать? –

ответ

1
var txt = $("#grid .cellHighlight").text() 
+0

не работал ... Он может выбрать несколько td – Mark

0

Если все, что вы хотели, чтобы получить selectedText где-нибудь на вашей странице. вы должны это сделать.

function getSelectionText() { 
    var text = ""; 
    if (window.getSelection) { 
     text = window.getSelection().toString(); 
    } else if (document.selection && document.selection.type != "Control") { 
     text = document.selection.createRange().text; 
    } 
    alert(text); 
} 

посмотреть fiddle

2

Если есть только один (1), которые могут быть выделены в то время, то вы можете сделать

var hightlightedText = $('table#grid td.cellHighlight').text(); 
console.log(hightlightedText); 

Однако, если у вас есть несколько случаев:

var cells = $('#grid .cellHighlight'); 
var texts = [] 
$.each(cells, function(index){ 
    texts.push($(cells[index]).text()); 
}); 
console.log(texts); 
>> ["W", "F"] 

An example JsFiddle found here

0

я нашел что-то интересное именно то, что вы хотите, может быть что-то вроде этого:

function getSelectionHtml() { 
    var html = ""; 
    if (typeof window.getSelection != "undefined") { 
     var sel = window.getSelection(); 
     if (sel.rangeCount) { 
      var container = document.createElement("div"); 
      for (var i = 0, len = sel.rangeCount; i < len; ++i) { 
       container.appendChild(sel.getRangeAt(i).cloneContents()); 
      } 
      html = container.innerHTML; 
     } 
    } else if (typeof document.selection != "undefined") { 
     if (document.selection.type == "Text") { 
      html = document.selection.createRange().htmlText; 
     } 
    } 
    alert(html); 
} 

Это отвечает Alison на этом посту How to get selected(user-highlighted) text in contenteditable element and replace it?

0
$("#grid .cellGrid").mouseup(function(){  
    alert($(this).html()); 
}); 
Смежные вопросы