Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как получить содержимое элемента вместе с самим элементом? (https://javascript.ru/forum/jquery/34249-kak-poluchit-soderzhimoe-ehlementa-vmeste-s-samim-ehlementom.html)

Shitbox2 26.12.2012 15:21

Как получить содержимое элемента вместе с самим элементом?
 
Есть тег
​<p id="elem" class="cl">aaa</p>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

Его нужно сохранить в переменную. Полностью, а не одно лишь содержимое. Сейчас делаю так
var elem = $('#elem').wrap('<div/>').parent().html()

Может быть можно лучше?

Deff 26.12.2012 15:30

Цитата:

Сообщение от Shitbox2
Как получить содержимое элемента вместе с самим элементом?

<script src="http://code.jquery.com/jquery-latest.js"></script>

<p id="elem1" class="cl">id="elem1"</p>​​​​​​​​​​​​​​​​​
<div id="elem2" class="cl">id="elem2" </div>


<!-- cкрытый блок хранения -->
<div id="storag" style="display:none"></div>

<script type="text/javascript">
function sav_html (selector){
var elem =$('#storag').html($(selector).clone()).html();
 return elem;
}
alert(sav_html ("#elem1"));
alert(sav_html ("#elem2"));
</script>

Hoshinokoe 26.12.2012 16:06

Shitbox2,

Использовать родное свойство outerHTML. Поддерживается всеми современными браузерами (работает даже в ИЕ6 и 7)
<script src="http://code.jquery.com/jquery-latest.js"></script>
<p id="elem" class="cl">content for id="elem1"</p>​​​​​​​​​​​​​​​​​

<script type="text/javascript">
var elem = $('#elem').get(0).outerHTML;
alert(elem);
</script>

Shitbox2 26.12.2012 16:13

Так тоже делал, только в библиотечном коде такое не прокатит, т.к. нельзя гарантировать, что будет блок хранения. Разве что, создать его, но по громоздкости будет больше чем с wrap.

Deff 26.12.2012 16:16

Shitbox2,
Цитата:

Сообщение от Shitbox2
Разве что, создать его, но по громоздкости будет больше чем с wrap.

Блок един на все исполнения - wrap же исполняется каждый раз
мон блок задать скриптом

<script src="http://code.jquery.com/jquery-latest.js"></script>

<p id="elem1" class="cl">id="elem1"</p>​​​​​​​​​​​​​​​​​
<div id="elem2" class="cl">id="elem2" </div>


<script type="text/javascript">
var a='<div id="storag" style="display:none"></div>';
$("body").append(a)
function sav_html (selector){
var elem =$('#storag').html($(selector).clone()).html();
 return elem;
}
alert(sav_html ("#elem1"));
alert(sav_html ("#elem2"));
</script>

Shitbox2 26.12.2012 16:18

Действительно. Даже так работает $('#elem')[0].outerHTML И как сразу не догадался...

Цитата:

Блок един на все исполнения - wrap же исполняется каждый раз
мон блок задать скриптом
В этом плане да, с блоком эффективнее.


Часовой пояс GMT +3, время: 05:17.