В связи с моим предыдущим вопросом (спасибо за ваш ответ, Крио), у меня есть еще один вопрос для 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, я хотел найти заданное имя якоря и вернуть всю html-разметку содержащего его элемента div с новым именем класса в виде строки, которую можно передать html-плееру shadowbox, например:
"""
<div newclassname>
<div rubric>
<a name>
</div>
<div content block>
<p>
<a links>
</div>
</div>
"""
Следующий код делает это, но с одной складкой, он переворачивает порядок документов
и
.
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, которая сохраняет порядок документов элементов в возвращаемой строке? Любые полезные предложения или замечания будут приветствоваться. Если есть более простой способ сделать это прямо, я бы тоже хотел это знать.
Спасибо
jjon
обновление: ответ благодаря комментариям от Pointy:
elem = $("#content")
.find("a[name=entry]")
.parent()
.parent()
.wrapAll('<div class="new"></div')
.parent()
.html()