如何使用jQuery从event.target获取text/html值

5

我正在使用Clipboard.js,尝试使用以下代码获取<td>节点中的文本:

$('.clipboard').click(function(evt) {
    clipboard.copy(evt.target.val()).then(
      function(){console.log("success");},
      function(err){console.log("failure", err);}
    );
});

很明显,.val()不是evt.target上的有效方法。在这里使用evt获取节点文本值的正确方式是什么?

只需将其包装在 $() 中即可。 - GillesC
4个回答

25
evt.target.innerText

这将给您文本值,而innerHtml将给您整个内容


9

应该是这样的

$(evt.target).text()

0

$('.clipboard').click(function(evt) { }); 中,您可以使用 "this" 关键字。

如果您运行 console.log( $(this) ),您将获得被点击的元素。在这种情况下,它将是 .clipboard 元素。

然后使用文本值:console.log( $(this).text() );

$('.clipboard').click(function(evt) {

    var clicked_element_text = $(this).text();

    clipboard.copy(clicked_element_text).then(

        // Do something with clicked_element_text 

        function(){console.log("success");},
        function(err){console.log("failure", err);}
    );
});

0

你正在混合使用纯JavaScript和jQuery。在你的回调函数中,evt是一个事件对象。而evt.target是一个DOM元素。

要使用jQuery方法,你需要通过将其包装在$()中来创建一个jQuery对象。

因此,它应该变成:$(evt.target).text()$(evt.target).html(),具体取决于你只需要纯文本还是需要内部HTML。

$('.clipboard').click(function(evt) {
    var $target = $(evt.target);
    clipboard.copy($target.text()).then(
      function(){console.log("success");},
      function(err){console.log("failure", err);}
    );
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接