14

试图从无序列表中获取事件目标元素的文本

<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>

用这样的代码

$('ul').click(function() {
theEl=(event.target.text);
});

当我控制台日志

event.target

它返回

 <li>Item 1</li>

事件.目标.文本

返回未定义

我只想要“第 1 项”。我知道我以前做过 - 一定很晚了......感谢任何帮助:)

4

5 回答 5

28

使用 jQuery 的文本函数:

$(event.target).text()
于 2013-02-06T02:54:49.873 回答
9

您混淆了原始 JS 和 jQuery。

在 jQuery 中,你会使用$(event.target).text()

但是,它在 JavaScript 中效率更高:event.target.firstChild.nodeValue

编辑:这是一个JSPerf作为证明。

于 2013-02-06T02:55:52.983 回答
2

原因event.target.text未定义是因为 HTMLElement 没有定义该方法或属性。但是,jQuery 确实有text()您正在寻找的东西。为了访问 jQuery 方法或属性,您需要将当前 HTMLElement 包装在一个 jquery 对象中。这是通过将它传递给 jQuery 来完成的,然后 jQuery 用它创建一个函数对象,以及暴露 API 的 jQuery 原型。

jQuery(element);//in general
$(event.target).text();//for your situation
于 2013-02-06T03:17:26.300 回答
2
event.target.textContent

它也是javascript访问。我建议您使用Ctrl+Shift+J. 写下你的代码:console.log(event)并在控制台上观察。您可以查看对象的每个属性。

于 2014-12-17T18:44:52.440 回答
1

试试这个-> event.target.innerText

于 2018-10-03T09:48:09.110 回答