Написание плагина
Доброго всем времени суток.
Пишу плагин для выделения синтаксиса листингов на сайте. На странице есть элемент <code type=javascript> // тут код</code> <code type=php> // тут код</code> В скрипте: $('[type=php]').itcode('php'); $('[type=javascript]').itcode('javascript'); и в самом плагине: $.fn.itcode = function(language) { switch (language) { case 'php': init($(this), phpWords); break; case 'delphi': init($(this), delphiWords); break; case 'javascript': init($(this), javascriptWords); break; case 'java': break; case 'code': break; case 'c#': break; } }; метод init var init = function (object, arrayOfWords) { var words = []; for (var k in arrayOfWords) { words[arrayOfWords[k]] = arrayOfWords[k]; } if (object.html()!==null) { var include = object.html(); var lines = include.split('\n'); } } Ну и дальше уже работа со строками. Всё работает хорошо, когда на странице только один элемент с тегом code, или несколько но с разными типами. Но если в тексте встречается <code type=javascript> // тут код</code>плагин почему-то выбирает содержимое object.html(); из первого встречающегося на странице. Прошу подсказки, в чём причина данной ситуации и как её решить? Заранее благодарю! |
$.fn.itcode = function(language) { return this.each(function() { switch (language) { case 'php': init($(this), phpWords); break; case 'delphi': init($(this), delphiWords); break; case 'javascript': init($(this), javascriptWords); break; case 'java': break; case 'code': break; case 'c#': break; } }); }; |
devote, благодарю за совет! Всё прекрасно.
Я так понял, проблема состояла в том, что при вызове плагина в this уже содержался массив объектов, а не каждый объект вызывал плагин для себя? |
Часовой пояс GMT +3, время: 06:24. |