如何使用jQuery获取id元素的一部分?

时间:2012-02-11 02:15:06

标签: jquery

如何从带有id =“old- [id]”的span获取“Some text”并将其放入id =“new- [id]”?

<span id="old-1">Some text</span>
<span id="new-1"></span>
<span id="old-5">Some text</span>
<span id="new-5"></span>

我不知道如何在没有id功能的情况下获取substring()的数字部分。 我认为存在是更正确的解决方案。 感谢。

7 个答案:

答案 0 :(得分:8)

由于你的问题并不完全清楚你要问的是什么,我会给你提供一些不同的例子:

对于单个ID,您可以这样做:

$("#new-1").text($("#old-1").text());

如果您要执行此操作的一系列顺序ID,则可以执行此操作:

for (var i = 1; i <= 5; i++) {
    $("#new-" + i).text($("#old-" + i).text());
}

如果它是HTML,而不仅仅是文本,您可以使用.html()代替上述代码中的.text()。

$("#new-1").html($("#old-1").html());

for (var i = 1; i <= 5; i++) {
    $("#new-" + i).html($("#old-" + i).html());
}

如果要查找ID为“old-”的所有对象,并处理所有这些对象,无论其数量和数量是多少,您都可以这样做:

$('[id^="old-"]').each(function() {
    var newid = this.id.replace(/old/, "new");
    $("#" + newid).html($(this).html())
})

这将创建一个jQuery对象,其中所有对象的id都以“old-”开头,然后将“old”替换为“new”以创建目标id值,并使用该值从源代码复制HTML到目的地。

如果在名为elem的变量中有一个给定对象,并且您只想提取id值的数字部分,则可以使用常规表达式来匹配数字部分,如下所示:

var matches = elem.id.match(/\d+$/);
if (matches) {
    var numString = matches[0];
}

答案 1 :(得分:4)

我相信您希望在事先不知道的情况下检索ID ,以便您可以复制该元素的文本。

如果这是正确的,这个简短的jQuery函数将会这样做。

$('span').each(function()
    {
        var idnum = $(this).attr('id').match(/[\d]/);
        $('#new-' + idnum).text($(this).text());
    }
);

我创建了a jsfiddle来演示。

答案 2 :(得分:1)

如果您希望将{{1>}跨度的所有的内容复制到相应的old-n跨度,那么应该这样做:

new-n

演示:http://jsfiddle.net/nnnnnn/bcXFf/

(通常我会使用$('span[id^="old-"]').each(function() { $('#new-' + this.id.split('-')[1]).html( $(this).html() ); }); 来执行此操作,因为您已经知道字符串中出现数字的位置,但是由于您已经要求避免它,我使用了.substr()。 )

.split()"attribute starts with" selector,因此上面的代码会选择所有以“{ - 1}”开头的“old-”,然后为每个范围找到相应的“new-”跨度并将内容复制到其中。

答案 3 :(得分:0)

这就是你要找的东西吗?

var id = 1;
$('#new-'+id).text($('#old-'+id).text());

答案 4 :(得分:0)

JavaScript paseInt()函数将仅返回混合字符串/整数变量的整数部分。如果将$('#old-1).attr('id')的值存储在变量中,然后将parseInt存储在其中,则应仅返回该数字。

答案 5 :(得分:0)

使用类似的东西

$(document).ready(function () {
    var el = $("#old-1");
    var oldId = el.attr('id').replace(/[A-Za-z$-]/g, "");
    $("#new-" + oldId).text(el.text());
});

答案 6 :(得分:0)

我会用:

$(document).ready(function(){
    var spanText = $('#old-1').text();
    $('#old-1').text(null);
    $('#new-1').text(spanText);
});

这将采用旧文本并将其放入新文本中。 如果你必须这样做会有多个id,那么你只需编写一个循环来完成它或使用$ .each方法迭代所有的id。

相关问题