2011-01-16 2 views
0

Ну, я создаю редактор исходного кода в Интернете, и я использую Snippet, плагин jQuery, чтобы сделать выделение. Итак, на данный момент у меня есть textarea и pre-элемент, где я копирую значение textarea для pre на каждой клавиатуре ... Поэтому я вызываю функцию .snippet(), в document.ready() и на каждой клавиатуре в чтобы сделать подсветку синтаксиса. Но я заметил, что это не сработает, когда я назову это более одного раза на одном элементе. Проверьте мой код здесь: http://jsfiddle.net/parisk/YkNMh/. (Это не будет работать при вызове keyup, потому что я вызвал его один раз на document.ready(), если вы отключите вызов на готовом документе, тогда он будет работать только при первом запуске) ... И я действительно хотел бы решить Эта проблема. Спасибо за вашу помощь!«Snippet» jQuery Plugin нельзя вызывать дважды в одном элементе

ответ

0

Плагин snippet обертывает элемент pre с помощью <div>, а также добавляет к нему класс в зависимости от выбранного вами стиля кода.

Очевидно, они используют те, чтобы проверить, есть ли элемент уже фрагмент 'ed.

Вам нужно будет отменить эти изменения, и простое решение в вашем случае является изменение

$('pre').snippet("c",{style:"the",showNum:true}); 

в

$('pre').removeClass().unwrap().snippet("c",{style:"the",showNum:true}); 

пример на http://jsfiddle.net/gaby/Kpphx/

+0

изменил ссылку на пример, поскольку оригинал был неправильным (* румянец *) .. –

+0

Это мир :) спасибо: D – Paris

0

У меня такая же проблема, try catch error: TypeError: $ .browser не определен. Итак, после некоторого чтения на JQuery получается, что $ .browser удален в JQuery 1.9 вверх.

Чтобы исправить это добавить после ссылки JQuery (миграция плагин):

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

Проблема решена, надеюсь, что это поможет кому-то!

Смежные вопросы