Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 30.07.2013, 22:52
Профессор
Отправить личное сообщение для lancer Посмотреть профиль Найти все сообщения от lancer
 
Регистрация: 30.01.2008
Сообщений: 230

Сообщение от xmlns
Посмотрел интернет на эту тему - на всех сайтах одна и та же статья, слизанная друг у друга.
Бер Бибо, Иегуда Кац. Подробное руководство по продвинутому JavaScript. Один из лучших учебников по jQuery, написание плагина разобрано от и до. Наверняка где-то есть в PDF, 2-е издание вроде последнее.
Ответить с цитированием
  #12 (permalink)  
Старый 31.07.2013, 01:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

xmlns,
1. да так делают
2. .data()

HTML-атрибуты data-* для хранения параметров и получения их в js
Ответить с цитированием
  #13 (permalink)  
Старый 31.07.2013, 01:41
Аспирант
Отправить личное сообщение для xmlns Посмотреть профиль Найти все сообщения от xmlns
 
Регистрация: 30.07.2013
Сообщений: 47

Главу из книжки прочел, но про даты там ничего. А это завтра прочитаю, сейчас уже лень.
Да, с data вроде сохраняются настройки.
Но вот опять палка в колеса: на странице есть два элемента: #authorizationForm и #registrationForm.
Делаю следующее:
$('#authorizationForm').formValidation(
            {
                tooltipPosition: "left",
                fields: {email: 'email'},
                other: [['input[name=password]','','','left']]
            });

$('#registrationForm').formValidation();

Согласно отладочной печати сначала инициализируется элемент '#authorizationForm, а за ним следом #registrationForm. Он, как видно, без параметров.
Как я делаю сохранение настроек:
$(this).data('settings', settings);

Как их считываю:
var qq = $(this).data('settings'); alert(qq.other);

Вместо того, чтобы у элемента #authorizationForm эти настройки восстановились - они снова становятся исходными. Методом пристального вглядывания обнаружилось, что эти настройки непонятно почему затираются при инициализации второго элемента (#registrationForm). А он, как я говорил, идет без настроек. Собственно, а как сделать чтобы работало?

PS ...В нормальных языках программирования для подобных вещей используют ООП...
Ответить с цитированием
  #14 (permalink)  
Старый 31.07.2013, 12:58
Аспирант
Отправить личное сообщение для xmlns Посмотреть профиль Найти все сообщения от xmlns
 
Регистрация: 30.07.2013
Сообщений: 47

Нашел решение:
var formId = this.attr('id');
$(formId).data('settings', settings);

var qq = $(formId).data('settings');


А вот если элемент (пусть называется #elem), к которому прицеплен плагин удаляется со страницы (метод remove()), а затем вставляется через php обратно с тем же ИД, в тоже место страницы - функция data() уже не возвращает сохраненные настройки для этого элемента. Она возвращает undefined.
Я так понимаю, эта функция по каким-то своим неведомым меткам определяет тот ли это элемент или другой. А как заставить его считать, что это именно тот элемент?
Ответить с цитированием
  #15 (permalink)  
Старый 31.07.2013, 13:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

xmlns,
никак -- новый элемент почему он должен знать что-то про свойства старого? либо при удалении или замене перезаписывать свойства либо хранить например в родителе элемента.
Ответить с цитированием
  #16 (permalink)  
Старый 31.07.2013, 13:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

делать привязку через делегирование -- метод on в квери.
Ответить с цитированием
  #17 (permalink)  
Старый 31.07.2013, 14:31
Аспирант
Отправить личное сообщение для xmlns Посмотреть профиль Найти все сообщения от xmlns
 
Регистрация: 30.07.2013
Сообщений: 47

Жаль, я думал, что если у элемента идентификатор прежний, значит должно все сохраниться.
Ответить с цитированием
  #18 (permalink)  
Старый 30.11.2014, 16:15
Интересующийся
Отправить личное сообщение для axmed2004 Посмотреть профиль Найти все сообщения от axmed2004
 
Регистрация: 03.03.2011
Сообщений: 12

помогите решить проблему с плагином
Здравствуйте. Сделал плагин анимированного сворачивания/разворачивания текстовых блоков. Все бы хорошо, но при наличии нескольких таких блоков параметр max-height берется с последнего блока, и если некоторые из предыдущих будут больше то раскрываются не полностью, а если меньше то анимация происходит с небольшой задержкой

(function($) {
  $.fn.openhide=function(options){
	var settings=$.extend({
		'maxH':200,
		'time':500,
		'removeButton':0,
		'hoverClass':false,
	},options)

	this.each(function(i){
		hg=$(this).height()
		if(hg>options.maxH){
			$(this).css({
				'max-height':options.maxH+'px',
				'overflow-y':'hidden'
			}).wrap("<div class='wrapper'></div>")
			$(this).parents(".wrapper").append("<span class='opener'>Раскрыть</span>")
			
			$(this).parents(".wrapper").find(".opener").click(function(){
				opener=$(this)
				div=opener.parents(".wrapper").find("div")
				op=div.hasClass("opened")
				div.animate({
					'max-height':(op?options.maxH:hg)+'px'
				},options.time,function(){
					if(options.removeButton)
						opener.remove()
					else{
						if(op){
							div.removeClass("opened")
							opener.text("Раскрыть")
						}
						else{
							div.addClass("opened")
							opener.text("Свернуть")
						}
					}
				})
			})
			.mouseover(function(){
				if(options.hoverClass)
					$(this).addClass(options.hoverClass)
			})
			.mouseout(function(){
				if(options.hoverClass)
					$(this).removeClass(options.hoverClass)
			})
		}
		
	})
  }
})(jQuery)


опция removeButton - удаление кнопки после разворачивания
Ответить с цитированием
  #19 (permalink)  
Старый 30.11.2014, 16:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

axmed2004,
делайте замыкание параметра hg или вычисляйте истинный размер при клике ... да var незабывайте
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание плагина для jQuery 1.9.1 (Sandr) jQuery 8 08.03.2013 19:18
Паттерн плагина jQuery prison47 jQuery 34 17.02.2013 09:50
Внешняя ссылка на страницу которая находится в IFRAME Модального окна плагина jQuery Андррр jQuery 0 07.12.2011 15:13
Поиск плагина выводящего подсказки к ссылкам, jQuery. Flashton Элементы интерфейса 6 04.03.2010 20:47
Написание собственного плагина. idler jQuery 5 16.04.2009 19:35