Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.05.2014, 15:44
Аспирант
Отправить личное сообщение для NapalmRain Посмотреть профиль Найти все сообщения от NapalmRain
 
Регистрация: 17.03.2014
Сообщений: 40

Написание плагина
Доброго всем времени суток.

Пишу плагин для выделения синтаксиса листингов на сайте.
На странице есть элемент
<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(); из первого встречающегося на странице.
Прошу подсказки, в чём причина данной ситуации и как её решить?

Заранее благодарю!
Ответить с цитированием
  #2 (permalink)  
Старый 05.05.2014, 15:56
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

$.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;
    }
  });
};
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 05.05.2014, 16:25
Аспирант
Отправить личное сообщение для NapalmRain Посмотреть профиль Найти все сообщения от NapalmRain
 
Регистрация: 17.03.2014
Сообщений: 40

devote, благодарю за совет! Всё прекрасно.
Я так понял, проблема состояла в том, что при вызове плагина в this уже содержался массив объектов, а не каждый объект вызывал плагин для себя?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
public метод для плагина Ichigeki jQuery 1 16.02.2012 19:07
написание события для плагина cmygeHm jQuery 1 08.02.2011 16:40
Внутреннее состояние плагина alexander2 jQuery 10 01.04.2010 12:55
Написание собственного плагина. idler jQuery 5 16.04.2009 19:35
Написание плагина для Firefox SunnyDay Общие вопросы Javascript 2 02.12.2008 15:21