Jquery .load () удаляет классы highlight.js

В моем php чате каждый раз при отправке сообщения я использую .load() обновить содержимое div по моему запросу ajax. после вызова метода .load классы highlight.js исчезают.

Highlight.js init

$(document).ready(function() {

hljs.configure({useBR: true});
$('div.sendermsg , div.receivermsg').each(function(i, block)
{
hljs.highlightBlock(block);
});

});

Чат Div

foreach($n as $x) { if ($x['username'] == $username) {?>

<tr>
<td class="sendertd">
<div class="sendermsg"><?php echo $x['message']; ?></div>
</td>
</tr>

<?php }

else { ?>

<tr>
<td class="receivertd">
<div class="receivermsg"><?php echo $x['message']; ?></div>
</td>
</tr>

<?php }
} ?>

Ajax

$.ajax({
url : "backend/user_to_user.php",
type : "POST",
data : {'message':message,'user2':user2},
success: function(data)
{
//syntax is highlighted and works well before this line is called
$(".tbody").load(location.href + " .tbody > *");
$(".tbody").scrollTop($(".tbody")[0].scrollHeight);

}
});

перед вызовом ajax (просто пример, если опубликованное сообщение является javascript)

перед звонком

после вызова AJAX

после звонка

Есть идеи?

РЕДАКТИРОВАТЬ
цитата из jquery.com

When calling .load() using a URL without a suffixed selector expression, the content is passed to .html() prior to scripts being removed. This executes the script blocks before they are discarded. If .load() is called with a selector expression appended to the URL, however, the scripts are stripped out prior to the DOM being updated, and thus are not executed.

так что я попробовал

$(".tbody").load(location.href+" .tbody > *",function(){
$.getScript("js/highlight.min.js");
});

до сих пор не работает

0

Решение

Получил работу, добавив это после .load()

$(".tbody").load(location.href+" .tbody > *");
$.getScript("http://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/highlight.min.js", function () {
$('div.sendermsg , div.receivermsg').each(function(i, block) {
hljs.highlightBlock(block);
});
});
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]