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

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

Some text  Some text  

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

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

对于单个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]; } 

我相信你想要在不知道它之前检索一个id 这样你就可以复制那个元素的文本。

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

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

我创建了一个jsfiddle来演示。

如果您希望将所有 old-n spans的内容复制到相应的new-n spans,那么应该这样做:

 $('span[id^="old-"]').each(function() { $('#new-' + this.id.split('-')[1]).html( $(this).html() ); }); 

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

(通常我会使用.substr()来执行此操作,因为您已经知道字符串中出现数字的位置,但是因为您已经要求避免它,所以我使用了.split()代替。)

^=是“属性开始于”选择器 ,因此上面的代码选择id为以“old-”开头的所有跨度,然后为每个跨度找到相应的“new-”跨度并将内容复制到其中。

这是你要找的?

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

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

使用这样的东西

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

我会用:

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

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