如何从每个id获取数字并使用jquery附加到另一个数据属性?

时间:2017-04-26 09:29:19

标签: javascript jquery

我有一些列表。

目前idtest_3, test_1, test_2。我需要来自每个(3,1,2)的{​​{1}}的号码id,并将此号码附加到另一个数据属性中。请检查结果部分。它会让你了解我的期望。感谢

HTML

li

脚本

<ul id="cat">
    <li id="test_3">Text 3</li>
    <li id="test_1">Text 1</li>
    <li id="test_2">Text 2</li>
</ul>

预期结果

$('#cat').attr('id').split("-")[2];

4 个答案:

答案 0 :(得分:2)

要实现此目的,您可以遍历li元素,并根据data()属性中的数字设置id。试试这个:

$('#cat li').each(function() {
  $(this).data('id', this.id.split('_')[1]);
}).click(function() {
  console.log($(this).data('id'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="cat">
  <li id="test_3">Text 3</li>
  <li id="test_1">Text 1</li>
  <li id="test_2">Text 2</li>
</ul>

答案 1 :(得分:1)

您可以使用ID ul循环遍历cat元素的所有子元素。

在每个循环中,通过获取id属性获取ID,在_上将其拆分并获取第一个索引。

然后,您可以使用JQuery的属性函数设置属性,您可以了解有关here的更多信息。

$('#cat li').each(function () {
    var dataId = $(this).attr('id').split('_')[1];
    $(this).attr('data-id', dataId);
});

此实例的一个示例

$('#cat li').each(function () {
    var dataId = $(this).attr('id').split('_')[1];
    $(this).attr('data-id', dataId);
});

console.log($('#cat').html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="cat">
  <li id="test_3">Text 3</li>
  <li id="test_1">Text 1</li>
  <li id="test_2">Text 2</li>
</ul>

答案 2 :(得分:0)

这应该是你的一些问题。

使用$(this).attr("id").split('_')将分割&#34; cat_3&#34;进入&#34; cat&#34;和&#34; 3&#34;然后使用[1]选择&#34; 3&#34;

&#13;
&#13;
$("#cat li").each(function(){
  $(this).attr("data-id", $(this).attr("id").split('_')[1]);
})

console.log($("#cat").html())
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="cat">
    <li id="test_3">Text 3</li>
    <li id="test_1">Text 1</li>
    <li id="test_2">Text 2</li>
</ul>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您也可以使用RegExpression。

var suffix = "test_2".match(/\d+/); // results --> 2

基本上它会在字符串值中取出数值。

<强>用法

$('#cat li').each(function() {
  $(this).data('id', this.id.match(/\d+/));
})