Javascript 获取HTML到子元素
有没有一种方法可以获取元素的HTML字符串或Javascript 获取HTML到子元素,javascript,jquery,html,Javascript,Jquery,Html,有没有一种方法可以获取元素的HTML字符串或文档片段,直到某个元素 例如,假设我有以下HTML <div id="blocks"> <div class="block"> <div> <ul> <li id="target">Some List Item</li> <li>Some Other List
文档片段
,直到某个元素
例如,假设我有以下HTML
<div id="blocks">
<div class="block">
<div>
<ul>
<li id="target">Some List Item</li>
<li>Some Other List Item</li>
</ul>
</div>
</div>
</div>
并获取一个HTML字符串,如:
<div>
<ul>
<li id="target">Some List Item</li>
</ul>
</div>
- 某些列表项
注意结果HTML中只有一个列表项
我想获取.block
元素的所有HTML,直到#target
元素
谢谢
//clone the original `.block` and get it's `#target`.
var cloned = $('#target').closest('.block').clone().find('#target');
var temp;
//go up the cloned parents and remove child that is not in the path of `#target`
while(true){
temp = cloned.parent();
var flag = false;
temp.children().each(function(i, el){
if(flag)
$(el).remove();
if($(el).is(cloned))
flag = true;
});
if(cloned.is('.block')) break;
cloned = temp;
}
在此之后,cloned.html()
就是您所需要的。
看小提琴:
请注意,与此处建议的其他解决方案相比,这不会改变原始HTML。更新:
将父级克隆到“.block”并删除“#target”的同级
查看工作代码,网址为:
试试这个
$('div.block').not('#target').remove()
这是一个完全不同的问题;我不认为这是一个可能的重复,你可以发布你期望的HTML结果。我仍然不知道你在问什么。@Felix看到我的问题了,我已经更新了它使它更清晰了。我不能这样做,HTML可能会有很大的变化。我知道的唯一不变的事情是我需要将HTML升级到哪个元素。$(“#target”).parentsUntil(“.block”);只要试过,它就会得到
元素的HTML忽略父元素直到一个。请参阅更新的解决方案。这将删除所有不是#target
的子元素。HTML会有很大的不同。@MichaelBates那么您需要什么请正确指定。请看这里:它几乎可以工作了!但是它去掉了一些不起作用的元素。看这里,测试不在列表中,但应该在列表中。检查这个版本。如果这不是预期的答案,请提供此输入HTML的预期答案
var newBlock = $('#target').parents("div.block").clone();
newBlock.find('#target').siblings().remove();
$('div.block').not('#target').remove()
$('.block #target').nextAll().remove();