Wednesday, November 23, 2011

:contains селектор jquery и работа с переменными

Недавно пришлось повоевать с одним из множества селекторов Jquery, а именно :contains() - поиск элементов содержащих нужный текст

Синтаксис очевидно простой:
$("div:contains('John')").css("text-decoration", "underline");
Возможности кажутся просто безграничными если подставлять не статичную стоку а заменять переменной. И именно с этим возникли проблемы, об это пишут и тут: http://api.jquery.com/contains-selector/

Тоесть конструкция someVar = $ ('div:contains('" + searchStr + "')'); - вызывала ошибку и работать отказывалась. Уже сейчас не вспомню как, но решение нашлось достаточно простое заменить крайние одинарные кавычки на двойные: someVar = $ ("div:contains('" + searchStr + "')");

javascript подсветка кода в редакторах

В разработческой части нашей системы предусмотрено редактирование исходных кодов шаблонов и самих java-классов и сответственно встала задача чтобы код для редактирования не копировать в редактор IDE или Notepad++ и потом вставлять назад и сохранять изменения и иметь возможность делать небольшие правки напрямую. Для этого код нужно было сделать более читаемым: посветить теги, пронумеровать строки и по возможности добавить прочие плюшки: несколько уровней отмены, умный поиск и тд.

Как выяснилось подобных библиотек существует более 10 - Comparison of JavaScript-based source code editors. Важно было чтобы умел подсвечивать mixed html (JS + HTML + инструкции Velocity) и сам Java.

Пробовал установить и протестировать 3 и них: CodeMirror - всплыли баги отображения в IE - курсор показывался в правой части экрана и судя по большому количеству обсуждений подобные баги у него мигрируют и периодически всплывают. устанавливать было сложнее всего - 3 файла общих, плюс дополнительно отдельный .js для каждого языка CodePress - проект давно не развивается, что насторожило, а при установке - вообще при сохранении перестало передаваться содержимое textarea, выкинул тут же
Остановились на EditArea (список фич и download)- есть все что нужно и даже часть фич отключили. Что порадовало в работе EditArea - внизу есть галочка включения/отключения подсветки для особо суровых случаев