Получить нажатый элемент в JQuery - PullRequest
1 голос
/ 27 августа 2011

Я использую следующий код, чтобы получить выделенный текст, мой вопрос, как я могу получить элемент, где текст был выделен? У меня есть 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 ]

6 голосов
/ 27 августа 2011

Вместо привязки mouseUp для документа привязывайте его для td элементов,

$('td').mouseUp(function(){
 var selectedTd=$(this);
});
2 голосов
/ 27 августа 2011

Вы можете получить элемент clicked в событии mouseup, выполнив следующее:

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

    var $clickedElement = $(event.target);

Элементом clicked может быть любой элемент внутри 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 ()

2 голосов
/ 27 августа 2011

Вам необходимо проверить event.target.Помните, что если у вас есть один или несколько дочерних элементов в каждой ячейке таблицы, вам нужно пройти вверх по дереву DOM с event.target, пока не достигнете элемента td (или нет, в этом случае щелчок был вне ячейки).

1 голос
/ 27 августа 2011

Просто используйте:

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

Теперь элемент td или tr, по которому щелкнули, сохраняется в глобальной переменной elem.Обратите внимание, что при этом будет возвращен каждый элемент, по которому щелкнул пользователь, поэтому вам необходимо проверить, был ли это элемент td или tr, например:

if(elem.tagName.toLowerCase() == "td" || elem.tagName.toLowerCase() == "tr")
0 голосов
/ 27 августа 2011

Помогает ли это?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...