尝试将两个跨度与jQuery结合在一起,需要帮助循环/迭代
我认为这是一个非常棒的问题,但我现在已经考虑了好几个小时了,我无法弄明白。
我需要在下面使用这个html代码并获取.project_name span和.location span以合并到同一个span中。
我有这个jQuery代码,它将正确地执行第一组跨度,但将继续使用第一个span的内容来填充其余的。
var s1 = $('.project_name').html(); $('.project_name').remove(); $('.location').prepend(s1 + ' ');
我假设我需要使用.each()或类似的东西,但我无法弄清楚正确的语法使它工作。 这是我迄今为止所拥有的jsFiddle 。
有任何想法吗? 这可能很简单。
如果你想保留标签……( 小提琴 )
$(".location").each(function() { $(this).prepend(" ").prepend($(this).prev()); });
在这里,如果你不想保留标签…( 小提琴 )
$(".location").each(function() { $(this).prepend($(this).prev().text() + " "); $(this).prev().remove(); });
这当然可以通过循环遍历.project_name
跨度来完成,我只是喜欢用.location
来实现它,因为这是我们实际保留的内容。
当你执行$("selector").each(function() { });
你可以使用$(this)
来获取当前正在迭代的对象。
这应该工作
var spantext=""; spantext += $('.project_name').text() + ", " + $('.location').text(); $('.project_name').remove(); $('.location').text(spantext);
试试这个 :
$('.project_name').each(function(el){ var s1 = el.html(); el.remove(); $(el.parent(),'.location').prepend(s1 + ' '); })
如果你想使用你的代码:
$('.dontsplit').each (function () { var html = $('.project_name', this).html(); $('.project_name', this).remove(); $('.location', this).prepend(s1 + ' '); });
如果不是,我更喜欢这个代码(更清楚的是发生了什么,我认为可读性很重要):
$('.dontsplit').each (function () { var text_1 = $('.project_name', this).text(); var text_2 = $('.locaton', this).text(); $('.project_name', this).remove() $('.locaton', this).remove(); var text = text_1 + text_2 $('').text(text_1 + text_2).appendTo(this); });