Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Получить this только что созданного элемента?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Viper
Отправлено: 21 Июля, 2012 - 17:42:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Вопрос следующего характеру. Есть некий плагин который создает элемент DOM(к примеру div). К примеру:

CODE (javascript):
скопировать код в буфер обмена
  1. $('span#a').myPlugin();


получаем
CODE (html):
скопировать код в буфер обмена
  1. <span id="a"><div class="abc"></div></span>

Тут понятно что this у нас будет содержать span и все что в нем.

Но если вызвать плагин так:


То div будет создан в <body>. Внутри плагина выглядит так
CODE (javascript):
скопировать код в буфер обмена
  1. $(html).insertBefore(options.create_before).animate({
  2.         opacity: 'toggle'
  3. }, options.speed, options.effect, options.onComplete);

html содержит div.

Как в этом случае обратиться к только что созданному элементу?

PS! Плагин может вызываться несколько раз на странице, соответственно div'ов может быть несколько.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Июля, 2012 - 18:09:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var new_element = $(html).insertBefore(options.create_before); // Только что добавленный элемент
  3.  
  4. new_element.animate({
  5.  
  6.         opacity: 'toggle'
  7.  
  8. }, options.speed, options.effect, options.onComplete);
  9.  


Ну и обращайтесь к нему, или к тому, что есть внутри:
CODE (javascript):
скопировать код в буфер обмена
  1. new_element.find('div')....


Или доработайте сам плагин, чтобы можно было передавать callback
и передавать в неё параметр, который возвращал бы этот элемент.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $.myPlugin(function(element){
  3. element .... ;
  4. });
  5.  

(Отредактировано автором: 21 Июля, 2012 - 18:20:50)

 
 Top
Viper
Отправлено: 21 Июля, 2012 - 18:19:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Что-то я не подумал про это. callback у меня для другого зарезервирован.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Июля, 2012 - 18:23:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Viper пишет:
callback у меня для другого зарезервирован.

Для чего?
(Добавление)
Я почему спрашиваю:
может как-то можно связать всё это дело.
 
 Top
Viper
Отправлено: 22 Июля, 2012 - 19:09:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




armancho7777777 у меня несколько калбеков навешано на 4 события onShow/onHide/onClose/onRemove. Вешать ещё один обработчик накладно будет.

Кстати вариант с переменной так и не сработал. Все равно в this попадает либо каждый элемент либо ничего.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
armancho7777777 Супермодератор
Отправлено: 22 Июля, 2012 - 19:14:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Скиньте плагин.
И описание к нему.
(Добавление)
А к вновь добавленному элементу Вы хотите обратиться после вызова плагина, или в его теле ?

(Отредактировано автором: 22 Июля, 2012 - 20:03:40)

 
 Top
Viper
Отправлено: 22 Июля, 2012 - 20:15:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




armancho7777777 в его теле. Где-нибудь перед return this.
Планирую добавить ещё 1 параметр. Что-то вида

CODE (javascript):
скопировать код в буфер обмена
  1. if (options.auto_hide) {
  2.         // Тут код по скрытию элемента.
  3.         //Собстно как и говорил выше если вызвать плагин через $('span').plugin... то проблем нет
  4.         // А вот если без, то this пустой а html ссфлается на все элементы с указанным классом(ui-message)
  5. }

(Отредактировано автором: 22 Июля, 2012 - 20:16:37)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
armancho7777777 Супермодератор
Отправлено: 22 Июля, 2012 - 20:21:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Ну не знаю как Вы работали с переменной, но вот, всё работает.

(Отредактировано автором: 22 Июля, 2012 - 20:31:20)

 
 Top
armancho7777777 Супермодератор
Отправлено: 22 Июля, 2012 - 20:32:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(document).ready(function(e) {
  3.    
  4.         $.aurora({
  5.                 text: 'Тестовое сообщение!'
  6.                 });
  7.        
  8.        
  9.         setTimeout(function(){
  10.         $.aurora({
  11.                 text: 'Тестовое сообщение2!'
  12.                 });
  13.         }, 2000);
  14.        
  15. });
  16.  


=>>
Скачать файл: plagin.js
Скачан раз: 65

(Отредактировано автором: 22 Июля, 2012 - 20:40:30)

 
 Top
Viper
Отправлено: 22 Июля, 2012 - 20:41:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Ща попробую покуралесить код заведя новый функционал. Отпишу о результатах.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
armancho7777777 Супермодератор
Отправлено: 22 Июля, 2012 - 20:41:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Ещё раз скачайте, и протестируйте с примером выше.
Сначало появится одно сообщение, через 2с. второе.
Потом через 2 с. скроется первое, а затем через 4с. и второе.
(Добавление)
Переменная new_element объявлена в самом верху, а присваения происходят уже ниже.

(Отредактировано автором: 22 Июля, 2012 - 20:44:44)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB