jquery - 如何删除除一个元素之外的所有元素,并保持相同的 CSS 路径?

标签 jquery css selector

我需要从页面中提取单个元素(及其所有内容),但仍保持指向它的相同 CSS 树。

为了解释,假设我有以下 DOM:

<div>1
    <div>2</div>
    <div>3
        <div>4
            <div>5</div>
        </div>6
        <div>7
            <div>8
                <div>9</div>
            </div>
        </div>
        <div>10
            <div>
                <div>content</div>
            </div>
        </div>
    </div>
</div>

我只对包含 content 的元素感兴趣,即我需要将 DOM 转换为:

<div>
    <div></div>
    <div>
        <div></div>
        <div></div>
        <div>
            <div>
                <div>content</div>
            </div>
        </div>
    </div>
</div>

(content 的路径应该还是一样的)

我正在尝试类似 jsfiddle 的东西:

$("#want").siblings().html("");
$("#want").parents().siblings().html("");

这似乎还不够。

建议?

编辑:概括了示例,可以有任何元素而不是 div。

最佳答案

也许是这样的:

var classForKeepings = 'keepThisItem';
var $elem = $('#want'); // give start element
$elem.addClass(classForKeepings); // give a class to make it stay

while( $elem.parent().length!==0 ){ // while the element has a parent
    $elem = $elem.parent(); // shift $elem to the parent
    $elem.addClass(classForKeepings ); // and add a class to make it stay
}

$('#startElement *:not(.'+classForKeepings+')').remove(); // remove all elements not tagged with the class
$('.'+classForKeepings ).removeClass(classForKeepings); // Cleanup afterwards

我使用了删除,因为你不需要它们。如果您确实需要这些,您可以将其更改为 .html('')

关于jquery - 如何删除除一个元素之外的所有元素,并保持相同的 CSS 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17814345/

相关文章:

jquery - heroku 上的应用程序错误 - 在本地主机上工作正常

javascript - 日期选择器更改事件抛出 "TypeError: string is not a function"

html - 在动态高度和宽度父元素中居中元素

objective-c - 如何解决 "Instance method [...] not found"错误?

css 选择具有类的元素的所有后代(星号)

javascript - 如何使用 jQuery 插件访问 $(this)

javascript - $.getJSON 使用数据参数修改 HTML 元素上的文本

javascript - html 连接语法错误 : unexpected identifier

jquery - 跨度占据整行

html - 制作具有背景和形式的响应式网站