【问题标题】:How to get the text value of a clicked link?如何获取点击链接的文本值?
【发布时间】:2011-06-19 18:34:52
【问题描述】:

我在文档的不同部分有匹配的文本。第一个是表格中的一组“标签”,如下所示:

<div id="my-div">
  <div><a href="#">tag 1</a></div>
  <div><a href="#">tag 2</a></div>
</div>

然后在文档的其他几个部分中,我在选择匹配链接时要突出显示的项目之后有一个隐藏元素,如下所示:

<div class="hide-me">tag 1</div>

那么我的点击功能是这样的:

$('#my-div a').click(function() {
  var txt = $(this).text();
  console.log(txt);
});

输出是一个空字符串,但我不知道为什么。

【问题讨论】:

  • 我没有发现任何问题。 A sample

标签: jquery jquery-selectors


【解决方案1】:

您的代码似乎是正确的,也试试这个。

$('#my-div a').click(function(e) {
  var txt = $(e.target).text();
  console.log(txt);
});

【讨论】:

  • 你是对的,它是正确的,也感谢替代方法!
  • 你能告诉我,这个函数是做什么的吗?为什么这是正确的,他的代码不起作用? :)
  • e.target 确保我们正在使用单击的锚标记
  • 问题中的 this 已经做到了。这个答案没有解决任何问题,所以我不确定它为什么会被接受
【解决方案2】:

在您的情况下,我不会使用链接的文本,因为它可能会在未来发生变化(即您需要翻译您的网站)。更好的解决方案是为链接添加自定义属性:

<div id="my-div">
  <div><a href="#" sectionId="someId1">tag 1</a></div>
  <div><a href="#" sectionId="someId2">tag 2</a></div>
</div>

然后把隐藏标签的id放在那里,这样你就可以了:

$('#my-div a').click(function() {
  var sectionId = $(this).attr('sectionId');
  $('#' + sectionId).show();
  return false; // return false so the browser will not scroll your page
});

【讨论】:

  • &lt;a&gt; 没有 value 属性。 ;)
  • 当您添加自定义属性时,您建议如何处理 W3C 验证?
  • @Umair - 如果你关心它而不是升级到 HTML5 并使用 data- 属性。
  • 如果您使用的是 HTML5,您可以使用自定义数据属性 (data-section-id="someId1")。
  • 感谢 Jakub,但由于我使用的是 CMS,因此我不想涉及此解决方案的一些问题,但我认为您的想法对于其他情况非常有用。
【解决方案3】:

$('#my-div a') 不明确。

它会读取 '#my-div' 中的所有 a 标签

你需要指定2个标签中的哪一个被点击..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多