在JQuery中获取clicked元素

时间:2011-08-27 14:53:58

标签: javascript jquery mouseevent

我正在使用以下代码来获取所选文本,我的问题是,如何获取文本被选中的元素?我有100行和10列,我想得到td和tr对象,我想查看表格中选择文本的天气。

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));
  }
}

5 个答案:

答案 0 :(得分:6)

而不是绑定mouseUp文档将其绑定到td个元素,

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

答案 1 :(得分:2)

您需要检查event.target。请注意,如果每个表格单元格中有一个或多个子元素,则需要从event.target向上走DOM树,直到达到td元素(或者不是,在这种情况下,点击是在一个小区外面。)

答案 2 :(得分:2)

您可以通过执行以下操作获取mouseup事件中单击的元素:

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

    var $clickedElement = $(event.target);

点击的元素可以是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()

答案 3 :(得分:1)

只需使用:

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

现在,单击的td或tr元素存储在名为elem的全局变量中。 请注意,这将返回用户单击的每个元素,因此您必须检查它是否是td或tr元素,如下所示:

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

答案 4 :(得分:0)

这有帮助吗?

http://api.jquery.com/get/