我有一段代码看起来像这样:

<div class="breadcrumbs">
    <a href="#">Root element</a>
    <a href="#">Blog</a>
    Page 2
</div>


我要做什么,并且不确定是否可以通过使用jQuery将上述代码片段转换为以下代码:

<div class="breadcrumbs">
    <a href="#">Root element</a>
    <a href="#">Blog</a>
    <span class="paginationSection">Page 2</span>
</div>


有没有办法用jQuery做到这一点?

更新#1

这是我为自己工作而编写的代码。我将代码放在这里只是为了帮助功能中的其他人。

// Get the breadcrumb element
var t = document.getElementsByClassName('breadcrumbs');
// Assign the breadcrumb element into t variable
var t = t[0];
// Get the text of the last node in the breadcrumb element
var currentText = t.childNodes[t.childNodes.length - 1].nodeValue;

// If currentText it is not empty
if($.trim(currentText) != '')
{
    // Create a new span element
    var span = document.createElement('span');
    // Set the class I need
    span.className = 'pagination';
    // Set the text to currentText
    span.innerHTML = currentText;
    // Empty the last node value
    t.childNodes[t.childNodes.length - 1].nodeValue = '';
    // Append the span on .breadcrumb element.
    t.appendChild(span);
}


最后,我要感谢大家参与这个问题:)

最佳答案

尝试这个:

$('.breadcrumbs').text().wrap('<span class="paginationSection" />');


更新:

试试这个:

fiddle

$('.breadcrumbs').text(function(index,text){return this.text}).wrap('<span class="paginationSection" />');


更新2:

这是解决实际问题作为您的问题要求的最佳方法:demo

$('.breadcrumbs').contents()
.filter(function(){
return this.nodeType !== 1;
}).wrap('<span class="paginationSection" />');

关于javascript - 是否可以在父元素中找到文本并将其包装起来?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21134905/

10-12 00:54