Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2016, 11:09
Аспирант
Отправить личное сообщение для maxapet Посмотреть профиль Найти все сообщения от maxapet
 
Регистрация: 27.08.2015
Сообщений: 43

Что делать с options
Есть вот такой плагин для выбора цвета:ра цвета:
(function ($){
	var defaults = {colors: new Array ("#000000", "#808080", "#8B0000", "#FF0000", "#FFA500", "#FFFF00", "#008000", "#87CEEB", "#0000FF", "#FF00FF",
		"#FFFFFF", "#C0C0C0", "#A52A2A", "#FFC0CB", "#FFD700", "#EEE8AA", "#00FF00", "#ADD8E6", "#000080", "#DDA0DD"),
		selectedColorIdx: 0,
		click: function (color) {}
	};
	var methods = {
		init: function(options) {
			return this.each(function(){
v				var settings = $.extend({}, defaults, options);
				var lineCnt = 2;
				var cellsInLine = settings.colors.length / lineCnt;

				var tbl = $("<table class='color-picker-tbl'/>");
				for(l=0; l < lineCnt; l++){
					var tr = $("<tr />");
					tr.appendTo(tbl);
					for(c=0; c < cellsInLine; c++){
						var td = $("<td style='background-color: " + settings.colors[l * cellsInLine + c] + ";' class='color-picker-mask'></td>").appendTo(tr);
					}
				}

				$(this).append(tbl);
				var $cells = $(this).find(".color-picker-tbl td");
				$cells.each(function(i) {
					$(this).click(function() {
						if (i != settings.selectedColorIdx){
							$cells.eq(settings.selectedColorIdx).removeClass("selected").removeClass("selected-color-mask-1").removeClass("selected-color-mask-2");
							$(this).addClass("selected").addClass(isDark(settings.colors[i]) ? "selected-color-mask-1" : "selected-color-mask-2");
							settings.selectedColorIdx = i;
						}
						settings.click(settings.colors[i]);
					});
				});
			});
		},
		setColor: function(color) {
			if (color[0] != "#")
				color = "#" + color;
			this.find(".color-picker-tbl td").each(function(i) {
				alert($(this).css("background-color"));
				if ($(this).css("color") == color) {
					$(this).trigger("click");
				}
			});
		}
	}
    $.fn.colorPicker = function(method){
		var settings;
		// немного магии
		if ( methods[method] ) {
			// если запрашиваемый метод существует, мы его вызываем
			// все параметры, кроме имени метода прийдут в метод
			// this так же перекочует в метод
			return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
		} else if ( typeof method === 'object' || ! method ) {
			// если первым параметром идет объект, либо совсем пусто
			// выполняем метод init
			return methods.init.apply( this, arguments );
		} else {
			// если ничего не получилось
			$.error( 'Метод "' +  method + '" не найден в плагине jQuery.mySimplePlugin' );
		}
   }
    $cells.eq(settings.selectedColorIdx).trigger("click");
    return this.each(colorPicker);
})(jQuery);

/**
 * Return true if color is dark, false otherwise.
 * (C) 2008 Syronex / J.M. Rosengard
 **/
function isDark(color){
    var colr = parseInt(color.substr(1), 16);
    return (colr >>> 16) // R
    + ((colr >>> 8) & 0x00ff) // G 
    + (colr & 0x0000ff) // B
    < 500;
}


Если settings объявить в самом внешней области, то он становится общим для всех экземпляров, а если объявлять его так, как это написано, то он недоступен в методе setColor.

Как сделать так, чтобы settings был свой для каждого экземпляра?
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2016, 12:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

maxapet,
откуда возникла строка 65 и что за мусор в строке 10? и лучше полный макет.
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2016, 13:24
Аспирант
Отправить личное сообщение для maxapet Посмотреть профиль Найти все сообщения от maxapet
 
Регистрация: 27.08.2015
Сообщений: 43

Это и есть полный макет.
В строке 10, действительно, мусор, mea culpa.
В строке 65 - настройка значения по умолчанию.
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2016, 13:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сообщение от maxapet
Это и есть полный макет
Сообщение от maxapet
В строке 65 - настройка значения по умолчанию.
тогда я испанский лётчик и помочь не могу.
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2016, 13:36
Аспирант
Отправить личное сообщение для maxapet Посмотреть профиль Найти все сообщения от maxapet
 
Регистрация: 27.08.2015
Сообщений: 43

А как это всё связано с настройками? И что конкретно непонятно?
Ответить с цитированием
  #6 (permalink)  
Старый 09.06.2016, 13:41
Аспирант
Отправить личное сообщение для maxapet Посмотреть профиль Найти все сообщения от maxapet
 
Регистрация: 27.08.2015
Сообщений: 43

65 строка осталась от версии без методов.
Ответить с цитированием
  #7 (permalink)  
Старый 09.06.2016, 13:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сообщение от maxapet
65 строка осталась от версии без методов.
переменная $cells видна только в методе init
Ответить с цитированием
  #8 (permalink)  
Старый 09.06.2016, 13:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сообщение от maxapet
А как это всё связано с настройками? И что конкретно непонятно?
а всё непонятно, нет описания, нет примера использования.
Ответить с цитированием
  #9 (permalink)  
Старый 09.06.2016, 14:06
Аспирант
Отправить личное сообщение для maxapet Посмотреть профиль Найти все сообщения от maxapet
 
Регистрация: 27.08.2015
Сообщений: 43

Ну, а в общих словах, можете сказать, как сделать так, чтобы настройки были индивидуальны для каждого экземпляра?
Ответить с цитированием
  #10 (permalink)  
Старый 09.06.2016, 14:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

maxapet,
они и так должны быть индивидуальными, строка 10 создаёт обьект настроек для каждого элемента индивидуально
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
checkbox решаем что делать biryukovm Элементы интерфейса 49 11.11.2015 07:17
Подставляется url превью к кглавной картинке. Что делать? espltd AJAX и COMET 2 10.11.2015 18:57
Coffee++ (Рождение легенды) Mаxmaxmаximus Оффтопик 112 09.11.2015 00:49
Как (эффективно) изучать JavaScript? JSTalker Общие вопросы Javascript 33 23.12.2010 03:13
Выдает ошибку. Что делать? octavian Общие вопросы Javascript 1 20.02.2010 12:13