与我之前的问题相关(感谢您对 Cryo 的回复),我对这里的 javaScript mavens 还有一个问题。
给定这样的 html 结构:
<content>
<div entry>
<div rubric>
<a name>
</div>
<div content block>
<p>
<a links>
</div>
</div entry>
.
.
. multiple identical entry divs
</content>
使用 jQuery,我想找到一个给定的锚名称,并返回其包含条目 div 的整个 html 标记,以及一个新的类名,作为可以传递给 shadowbox 的 html 播放器的字符串,如下所示:
"""
<div newclassname>
<div rubric>
<a name>
</div>
<div content block>
<p>
<a links>
</div>
</div>
"""
下面的代码做到了这一点,但是有一点点,它颠倒了 <div rubric> 和 <div content block> 的文档顺序。
var $pageEntry = null;
jQuery.get('thatPage.html', function(data){
$pageEntry = jQuery(data).find("#content");
});
function displayEntry(entry){
html = $pageEntry.find("a[name='" + entry + "']")
.parent()
.siblings()
.andSelf()
.wrapAll('<div class="newclassname"></div')
.parent()
.parent()
.html()
Shadowbox.open({
options: {
enableKeys: false
},
player: 'html',
content: html
});
};
任何人都可以建议一个不那么冗长的 jQuery 链来保留返回字符串中元素的文档顺序吗?欢迎任何有用的建议或意见。如果在直接 js 中有更直接的方法可以做到这一点,我也很想知道。
谢谢,
jjon
更新:感谢Pointy评论的答案:
elem = $("#content")
.find("a[name=entry]")
.parent()
.parent()
.wrapAll('<div class="new"></div')
.parent()
.html()