2011-08-27 111 views
1

我正在使用以下代碼來獲取選定的文本,我的問題是,如何獲取文本被選中的元素?我有100行和10列,我想獲得TD和TR對象,我想檢查天氣表中的文本被選中。在JQuery中獲取單擊的元素

function getSelectedText() { 
    var t = ''; 
    if(window.getSelection){ 
    t = window.getSelection(); 
    }else if(document.getSelection){ 
    t = document.getSelection(); 
    }else if(document.selection){ 
    t = document.selection.createRange().text; 
    } 
    return t; 
} 
$(document).bind("mouseup", putSelectedToInput); 

function putSelectedToInput(){ 
    var st = getSelectedText(); 

    if(st!=''){ 
    $("#params_oldname").val($.trim(st)); 
    } 
} 

回答

6

而不是用於文檔綁定它td元素結合mouseUp

$('td').mouseUp(function(){ 
var selectedTd=$(this); 
}); 
+0

jQuery的.mouseUp已被棄用。改用.click。 – Andrade

2

您需要檢查event.target。請注意,如果每個表格單元格中有一個或多個子元素,則需要從event.target開始步行到DOM樹,直到達到td元素(或者不是,在這種情況下點擊位於單元格外)。

1

只需使用:

document.onclick=function(){ 
elem = window.event.srcElement 
} 

現在TD或者被點擊的存儲在名爲ELEM全局變量tr元素。 注意,這將返回每次在用戶點擊的元素,所以你必須檢查它是否是一個TD或者tr元素,像這樣:

if(elem.tagName.toLowerCase() == "td" || elem.tagName.toLowerCase() == "tr") 
2

你可以在MouseUp事件的點擊的元素通過這樣做:

function putSelectedToInput(event){ // notice the event parameter 

    var $clickedElement = $(event.target); 

clicked元素可能是td中的任何元素。你可以得到TD本身與此:

// returns the closest parent that is a td (or the element itself if it's a td) 
var $theTd = $clickedElement.closest('td'); 

event.target.closest()