如何使用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。