1

我得到理想的 Html看起来像这样:

<span class="RapidLink1-H">See the more detailed areas of what not</span>

接下来我的目标是将跨度标记更改为锚标记。使用理想的 Html,我是这样做的:

            // Walk through each link tag on this page and replace the content with an actual link
            thisLink.each(function() {

                linkRefTarget = '';

                // Get only the identifier number of the link
                linkId = ($(this).attr('class')).replace(/[A-Za-z$-]/g, '');

                // Match this link with the list of link references
                if (thisLinkRef) {
                    for (var key in thisLinkRef) {
                        if (key == 'link' + linkId) linkRefTarget = thisLinkRef[key];
                    }
                }

                output = '';
                output+= '<a href="#' + linkRefTarget + '" id="link' + linkId + '" class="rapidLink">';
                output+= $(this).html();
                output+= '</a>';

            }).replaceWith(output);

现在,当我实际得到这种 Html 时,问题就来了(请注意,我无法更改 Html 输入):

<span class="RapidLink1-H">See the</span><span class="RapidLink1-H">more detailed areas of</span><span class="RapidLink1-H">what not</span></span>

问题是:

我怎样才能让它与这样一组破碎的跨度一起工作?

我在想以下几点:

  • 找到预期的链接跨度
  • 检查下一个元素是否也是同一个类的span
  • 然后检查下一个元素是否也是...,
  • 然后检查...
  • 如果没有找到,将每个 span 的 innerHtml 组合成一个锚标记

我怎么能实现这样的循环?

谢谢。

4

1 回答 1

3

+选择连续元素的选择器:http: //jsfiddle.net/NWWYC/1/

$(".RapidLink1-H + .RapidLink1-H").each(function() {
    // move contents to previous span, remove this span afterwards
    $(this).prev(".RapidLink1-H").append(
        $(this).contents()
    ).end().remove();
});
于 2012-08-17T10:50:18.070 回答