javascript - 获取每种语言的跨度标题并插入新的跨度

标签 javascript jquery dom-manipulation

我有以下一段 html(在 cms 环境中):

<div id="languageswitch">
    <div class="language-object">
        <span class="Language selected" title="English (United States)">
        </span>
        <span class="Language" title="Nederlands (Nederland)">
            <a href="http://mylocalwebsite.nl/nl-nl/">
            </a>
        </span>
    </div>
</div>

所以我想获取每种语言的跨度标题,并将其插入并用类文本包装在另一个跨度中。 HTML 结果应如下所示:

<div id="languageswitch">
    <div class="language-object">
        <span class="Language selected" title="English (United States)">
            <span class="text">Eng</span>
        </span>
        <span class="Language" title="Nederlands (Nederland)">
            <a href="http://mylocalwebsite.nl/nl-nl/">
                <span class="text">Ned</span>
            </a>
        </span>
    </div>
</div>

到目前为止,我的解决方案无法正常工作,因为两种语言的文本变得相同,而不是两种:

//get the span.Language title
var getLanguageTitle = $('#languageswitch').children("div").children("span").attr("title");
//insert new spans to show the span titles
$('#languageswitch span').each(function () {
    $(this).append("<span class='text'></span>");
});
$('span.text').append(getLanguageTitle);

我的 jsfiddle 是:http://jsfiddle.net/7tjb1fw7/1/

最佳答案

你把事情搞得太复杂了:

$('.Language').each(function () {
    var txt = $(this).attr('title');
    $(this).append("<span class='text'>" + txt + "</span>");
});

JS Fiddle Demo


编辑:如果你想检查一个链接,你可以这样做:

$('.Language').each(function () {
    var txt = "<span class='text'>" + $(this).attr('title') + "</span>",
        link = $('a', this);
    if(link.length){ link.append(txt); }
    else { $(this).append(txt); }
});

JS Fiddle Demo

关于javascript - 获取每种语言的跨度标题并插入新的跨度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29199498/

相关文章:

javascript - EaselJS 通过事件传递参数

javascript - jQuery显示所有子节点的方法

javascript - 当我向上滚动时,AngularJS ngInfiniteScroll 一直在触发

javascript - 动态创建的 div

javascript - 使用 insertAdjacentHTML() 添加部分 HTML

html - JQuery 附加到子元素

jQuery 如何从 <div> 中删除所有 <span> 标签?

javascript - 我的观点之一没有出现在我的主人 - Laravel

javascript - 调用 jquery ajax 响应中定义的函数

javascript - 阻止 YouTube javascript API 中的后续自动播放