【问题标题】:jquery: extract value from $(this) [duplicate]jquery:从$(this)中提取值[重复]
【发布时间】:2013-01-31 20:55:48
【问题描述】:

可能重复:
Javascript / Jquery - Get number from string

使用

var id = $(this).attr("class");

我得到点击链接的所有类,var id返回4个类:

button_red 501 ajax-call class2

如何提取类 '501' 并将其放入类似 var id_numeric = 501 的 var 中?

感谢您的建议

【问题讨论】:

  • 不禁想知道为什么需要使用类来存储看起来像语义数据的东西。
  • 通常我会将它存储在 ID 中,在这种情况下,ID 已经被其他东西占用(drupal ajax 链接)。我知道你想知道;)
  • 这是XY problem

标签: jquery extract numeric


【解决方案1】:

假设您使用的是 HTML5 文档类型,您可能会使用 data- 属性而不是 CSS 类。例如:

data-id="501"

然后

var id = $(this).attr("data-id");

var id = $(this).data("id"); //[1]

会起作用的。

参考:

[1]http://tutorialzine.com/2010/11/jquery-data-method/

【讨论】:

  • 这是适合这项工作的工具。
  • 数据属性实际上已经存在了一段时间caniuse.com/dataset
  • @wirey,数据属性已经支持一段时间了,但是直到 HTML5 规范才标准化,这需要 HTML5 文档类型。
  • @wirey 这非常有用。谢谢。
  • 也感谢你 Tieson,我会记住这一点的。我正在使用 drupal 7 ajax 链接,因此我还不能使用它(做了一些谷歌搜索)
【解决方案2】:
var numericClassIdMatches = $(this).attr('class').match(/\b\d+\b/);

在上述情况下,501 将是 numericClassIdMatches[0]

【讨论】:

  • 非常感谢,它成功了!我会尽快接受你的回答
  • 顺便说一句,如果你愿意,你能解释一下 (/\b\d+\b/) 部分吗?我没有看到任何逻辑
  • @Axel 您引用的类名限制在当前的 HTML 规范中不存在
  • @MaartenHartman 因为看看获取您要查找的 ID 数据是多么复杂! $(this).attr('class').match(/\b\d+\b/)[0];$(this).data('id')。此外,可以通过其他方式操作类($(this).removeClass() 将删除 ID 类以及样式类)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 2018-01-27
相关资源
最近更新 更多