Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как взять html() сам объект на который вешаем (https://javascript.ru/forum/jquery/35402-kak-vzyat-html-sam-obekt-na-kotoryjj-veshaem.html)

qwermjk 10.02.2013 08:28

как взять html() сам объект на который вешаем
 
<div id='qqq'><span>123</span></div>

var qqq = $('#qqq').html()


В переменную поподёт только <span>123</span>, а нужно чтобы попало всё! <div id='qqq'><span>123</span></div>

danik.js 10.02.2013 09:01

Есть $('#qqq')[0].outerHTML, но оно не работает в старых FireFox.
В ряде случаев можно использовать
$('<div/>').append($('#qqq').clone()).html()

Но это медленно. Если нужна скорость, то лучше скомбинировать эти два решения.

рони 10.02.2013 09:07

qwermjk,
<!DOCTYPE HTML>
<html>
<head>
  <title></title>
 <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div id='qqq'><span>123</span></div>
<script type="text/javascript">
var div = $('<div/>')
$('#qqq').clone().appendTo(div)
alert(div.html())
</script>
</body>
</html>

qwermjk 10.02.2013 09:30

не то, нужно поместить это в переменную в текстовом формате (html), а с помощью clone возвращает объект

danik.js 10.02.2013 09:40

qwermjk, а кнопочку Посмотреть не изволите ли нажать?
Не знаю че там видите Вы, но мне выдало:
<div id="qqq"><span>123</span></div>
Чем это не "текстовый формат"? Какое вам дело до того, что возвращает clone(), используемая где-то в середине ?

danik.js 10.02.2013 09:43

На всякий случай поясню (чувствую без пояснения вы не поймете):
У меня теже яйца что и у рони, только в профиль в ряд, верней в одну строку.

рони 10.02.2013 09:45

qwermjk,
<!DOCTYPE HTML>
<html>
<head>
  <title></title>
 <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div id='qqq'><span>123</span></div>
<div class="content" ></div>
<script type="text/javascript">
$('.content').text($('<div/>').append($('#qqq').clone()).html())
alert($('.content').text());
</script>
</body>
</html>

qwermjk 10.02.2013 10:43

Цитата:

Сообщение от danik.js
а кнопочку Посмотреть не изволите ли нажать?

Почему то не сработало!!! в опере

qwermjk 10.02.2013 10:50

У себя код скопировал, работает, а вот без дополнительного дива нельзя?
Да и я не правильно выразился, чтобы не как текст был, а работал как html если его вставить!!!

рони 10.02.2013 10:54

qwermjk,
вставляйте как html будут элементы, если text будет текст.
А с оперой действительно не посмотреть! хмм???.

danik.js 10.02.2013 12:20

Цитата:

Сообщение от qwermjk
Почему то не сработало!!! в опере

Да ладно? А это наверное - фотошоп?

danik.js 10.02.2013 12:24

Цитата:

Сообщение от qwermjk
а вот без дополнительного дива нельзя

new XMLSerializer().serializeToString($('#qqq')[0]);
Ессессно, не кроссбраузерно.

qwermjk 10.02.2013 13:10

Цитата:

Сообщение от danik.js
Да ладно? А это наверное - фотошоп?

Версия:
12.13
Сборка:
1734
Платформа:
Win32
Система:
Windows 7

qwermjk 10.02.2013 13:13

Цитата:

Сообщение от danik.js
Ессессно, не кроссбраузерно.

Нее, не кросс браузерно не пойдёт!!
да ладно, я уже через массив загнал нужные данные которые в родительском теге храняться и в переменную их записал!!
Не хотел конечно же так делать, так как забуду обновить, если ещё что то в тег добавлю!
выглядит примерно так
for(i=0; i<chat_mas.length; i++){
		text_mas += '<div class="chat_user" iduser="'+chat_mas[i][0]+'" percent="'+chat_mas[i][1]+'" status="'+chat_mas[i][2]+'">'+chat_mas[i][3]+'</div>';
	}

danik.js 10.02.2013 13:56

qwermjk, все тоже самое. Только винда у меня 64битная, но в about инфа таже самя (включая Платформа: Win32)

Цитата:

Сообщение от qwermjk
Нее, не кросс браузерно не пойдёт!!

А вот так будет кроссбраузерно и быстро (и даже без jQuery :) ):
<div id="test" class="hello">Inner Text</div>
<script>
    var html = test.outerHTML || new XMLSerializer().serializeToString(test);
    alert(html);
</script>

Deff 10.02.2013 15:18

Цитата:

Сообщение от qwermjk
а вот без дополнительного дива нельзя?

<!DOCTYPE HTML>
<html>
<head>
  <title></title>
 <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div id='qqq'><span>123</span></div>


<script type="text/javascript">
var ReturnThisHTML = (function( b ){
    return function(obj) {
        b.innerHTML="";
        b.appendChild(obj);
        return b.innerHTML;
    }
})( document.createElement( 'b' ) );
alert(ReturnThisHTML( $('#qqq').clone().get(0)) )
alert(ReturnThisHTML( $('#qqq').find('span').clone().get(0)) )
</script>

</body>
</html>


<script src="http://yandex.st/jquery/1.9.1/jquery.min.js"></script>
<div class="xxx">asfasdddf</div>
<script>
var ReturnOuterHTML = (function( b ){
    return function(obj) {
        b.innerHTML="";
        b.appendChild(obj.clone()[0]);
        return b.innerHTML;
    }
})( document.createElement( 'b' ) );

$.fn.ohtml = function(){
    return ReturnOuterHTML(this);
}
 
alert($('.xxx').ohtml());
</script>

danik.js 10.02.2013 15:32

Deff, ну ты и фокусник. А если несколько раз вызывать?

Deff 10.02.2013 16:40

danik.js,
Объект создаётся единожды
Поправил


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