0

是否可以获取像“something-20”这样的自定义属性

比如说它在<div class="somecustomClass something-20"></div>

我想毕业 19 以便我可以操纵它,因为 css 有从 something-1 到 something-100 的块

我使用下面的代码来检索标签 ID:

tabId = $('li').find('a').attr('href').replace('#tab', '');

是一样的方法吗?

4

3 回答 3

4

这不是自定义属性,而是一个类。您必须获取整个类字符串,然后可能使用正则表达式来查找您想要的值。

data-使用属性会更容易:

<div class="somecustomClass" data-something="20"></div>

JS:

var value = $('.somecustomClass').data('something'); // 20
于 2013-10-11T14:21:22.717 回答
0

如果您希望它成为自定义属性,我建议您按照 Jason 在回答中所说的去做。但是,如果您想获取something-#元素并对它们做一些事情,您可以执行以下操作。

for(var i=1;i<=100;i++) {
    var el = $('.something-'+i);
    //do something with the element to manipulate it
}
于 2013-10-11T14:24:58.067 回答
0

相似的。tab id 的作用是 3 件事

第 1 部分是选择正确的元素。

第 2 部分是获取包含我们想要的数据的属性的值

第 3 部分是使用正则表达式获取我们想要的特定数据位

对于第 1 部分,我不确定您使用什么来识别这些块以选择它们。

您可以使用 $('[class^="something"]') 来获取所有具有以文本“某物”开头的类的元素,但这会很慢。如果你可以使用类似 $('.somecustomClass') 的东西,它会表现得更好。

如果你只是想调整你遇到的第一个匹配元素,你可以这样做:

var myNumber = $('.somecustomClass')[0].className.replace(/.*?\bsomething\-(\d+).*/gi, "$1");

如果您已经熟悉正则表达式,我们深表歉意,但对于其他读者来说,这是它的作用的细分:

.*? 表示非贪婪地选择零个或多个字符,\b 表示单词边界,然后它会找到文本 'something-' 后跟一个或多个数字。在它周围加上括号可以捕捉它在那里找到的东西。以防万一你有课,它也有 .* 来获取零个或多个字符来找到它们。最后的 /gi 意味着通过类全局查看,我的意思是不区分大小写。$1 作为替换函数的第二个参数是捕获的数字。

于 2013-10-11T14:51:23.757 回答