Вызов JSON.stringify для всех элементов pre

Я пытаюсь JSON.stringify весь текст JSON в элементах <pre> в документе с указанным классом, а затем использую google-code-prettify для добавления окраски синтаксиса. Поскольку я не знаю Javascript или jQuery, я борюсь - пока все, что у меня есть, это следующее:

<body onload="prettyPrint()">
    ...
    <pre class="prettyprint lang-js">{...}</pre>
    ...
</body>
<script>
    $('[class="prettyprint lang-js"]').next().text("TEST"); // call JSON.stringify()?
</script>

Красивая печать работает, но я не знаю, как вызвать JSON.stringify или даже просто выбрать правильные элементы.

В частности, я хочу сделать для всех элементов <pre> в документе с классом "prettyprint lang-js", я хотел бы заменить текстовое содержимое результатами вызова JSON.stringify для этого текста, а затем call
google-code-prettify `prettyPrint()' для окрашивания синтаксиса.


person jon-hanson    schedule 04.06.2012    source источник
comment
Вызов JSON.stringify для текста просто заключает его в кавычки и экранирует определенные символы...   -  person Niet the Dark Absol    schedule 04.06.2012
comment
@Колинк: ты прав. Сначала мне пришлось преобразовать JSON в объект JS, используя eval().   -  person jon-hanson    schedule 04.06.2012
comment
Эм... Что не так с JSON.parse?   -  person Niet the Dark Absol    schedule 04.06.2012
comment
Без понятия. Вы видели тот момент, когда я сказал, что не знаю Javascript?   -  person jon-hanson    schedule 04.06.2012


Ответы (1)


Вы можете использовать селектор классов, чтобы выбрать любой элемент по имени класса. Попробуй это.

$('.prettyprint.lang-js').each(function(){
    var $this = $(this);
    $this.text(JSON.stringify($this.text()));
});

//Now you can call prettyPrint
prettyPrint();
person ShankarSangoli    schedule 04.06.2012
comment
Пробел используется для селектора потомков. Это должно быть $('.prettyprint.lang-js') - person rogerz; 04.06.2012