在.querySelector中引用它

时间:2016-03-23 15:18:13

标签: javascript jquery jquery-selectors

如果我使用以下内容选择某个节点

var Link = document.querySelector('table .ctrlcLink');

我使用类ctrlLink获取列的第一列值,这正是我所期望的。

但是,由于我将onclick事件设置为同一个表中的另一列,因此我希望得到与我单击的元素位于同一行的.ctrlLink列的值。 所以我试过这样的事情:

var Link = document.querySelector($(this).closest('tr').children('td.ctrlcLink'));  

但后来我

  

“无法在'Document'上执行'querySelector':'[object Object]'是   不是有效的选择器。“

我应该使用什么选择器?

编辑: 也许我应该补充说我需要它以便我可以在之后使用以下内容:

var range = document.createRange();  
range.selectNode(Link);  
window.getSelection().addRange(range);
var successful = document.execCommand('copy');

EDIT2: 按照建议,我为此创建了一个codepen页面(谢谢!): http://codepen.io/whatwhat/pen/JXJjOp 我想要得到的是,当我单击表格中的图像时,我在其旁边的单元格中的同一行上获取文本并将其放入我的ctrl-c中。 但是,我无法获得单击图像的确切rownumber。 这部分不起作用:

var rowIndex = $(this).index();

什么会起作用,我怎么能得到rownumber。? 然后我会连接它改变

var Link = document.querySelector('#docReport tr:nth-child(1) .ctrlcLink');

var Link = document.querySelector('#docReport tr:nth-child('+rowIndex+') .ctrlcLink'); 

或者我可以用另一种方式解决这个问题吗?

EDIT3: 我最终得到了我需要的东西: http://codepen.io/whatwhat/pen/GZEgKK

2 个答案:

答案 0 :(得分:1)

您根本不需要querySelector,只需使用

即可
var Link=$(this).closest('tr').children('td.ctrlcLink');

答案 1 :(得分:0)

你应该使用Jquery Event,而不是' onclick'。

http://codepen.io/nigayo/pen/oxwYwz?editors=1010

$("#docReport img.smiley-img").on("click", function(){

  var Link = $(this).parent().prev()[0];
  var range = document.createRange();
  //blah...blah..
});