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 :: js плагин, правильное написание

 PHP.SU

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


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

> Без описания
DlTA
Отправлено: 10 Марта, 2015 - 10:44:09
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




есть у меня плагин для jquery, написан вроде верно
CODE (javascript):
скопировать код в буфер обмена
  1. (function($){
  2.         $.fn.popUpMes = function(htmlText){
  3.                 // куча всякого кода
  4.         }
  5. })(jQuery);


плагин занимается отображением модального окошка поверх страницы
вызов происходит так
CODE (javascript):
скопировать код в буфер обмена
  1. $().popUpMes(html)

но мне не нравится писать эти скобочки $()
а если писать без них то вылетает ошибка
"Uncaught TypeError: undefined is not a function", ругается на
CODE (javascript):
скопировать код в буфер обмена
  1. $.popUpMes('123123');


но ведь в jquery есть тот же $.get
и в нем не надо писать скобочки,

как так оформить код?
(Добавление)
в общем роясь нашел что если сделать чет типа
CODE (javascript):
скопировать код в буфер обмена
  1.         $.popUpMes = $.fn.popUpMes = function(htmlText){//....

то можно делать вызов без скобок
$.popUpMes('123123');
хотя чет подозрения, может чет не так?

теперь другой вопрос, как оформить возможность сделать вызов
$.popUpMes.img(src);
с возможностью
$.popUpMes.img(src).css()
??

(Отредактировано автором: 10 Марта, 2015 - 10:53:50)

 
 Top
OrmaJever
Отправлено: 10 Марта, 2015 - 11:07:42
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




опиши оба варианта
CODE (javascript):
скопировать код в буфер обмена
  1.  $.fn.popUpMes = function(htmlText){
  2.  $.popUpMes = function(htmlText){


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DlTA
Отправлено: 10 Марта, 2015 - 11:08:49
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




OrmaJever пишет:
опиши оба варианта
да так и сделал, но не знаю насколько это корректно

DlTA пишет:
теперь другой вопрос, как оформить возможность сделать вызов
$.popUpMes.img(src);
с возможностью
$.popUpMes.img(src).css()


хотя наверное для поnдержания старого кода лучше делать
$.popUpMes.img(src) // $.popUpMes.img(src).css()
$.popUpMes.html(html)

(Отредактировано автором: 10 Марта, 2015 - 11:12:22)

 
 Top
DelphinPRO
Отправлено: 10 Марта, 2015 - 12:13:27
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




идеология jQuery предполагает, что плагин будет применен к некоторому элементу.

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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DlTA
Отправлено: 10 Марта, 2015 - 12:14:38
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




DelphinPRO пишет:
идеология jQuery предполагает, что плагин будет применен к некоторому элементу.
)) и вот к какому элементу мне применить вызов модального окна?
можно конечно это обернуть вообще не jquery, но как то не интересно
 
 Top
DelphinPRO
Отправлено: 10 Марта, 2015 - 12:15:52
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




кроме того данная конструкция должна вернуть объект

var myPlugin = $('#some_selector').pluginName(optionsObject);

у которого может быть свой апи

CODE (javascript):
скопировать код в буфер обмена
  1. myPlugin.setContent(html);
  2. myPlugin.show();

(Добавление)
DlTA пишет:
) и вот к какому элементу мне применить вызов модального окна?

да к любому. который и будет попапом.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DlTA
Отправлено: 10 Марта, 2015 - 12:24:47
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




DelphinPRO пишет:
myPlugin.setContent(html);
myPlugin.show();

оспорю подобное кодирование, когда сначала создается объект а потом вызывается метод отображения, меня больше устраивает когда это все где инкапсулировано и не напрягает

но вот как правильно оформлять для получения такого вызова myPlugin.setContent(html)

в теории $.myPlugin = {setContent:function(html){}}
так?
 
 Top
DelphinPRO
Отправлено: 10 Марта, 2015 - 12:24:57
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




так, например, реализован jquery.tools.overlay


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DlTA
Отправлено: 10 Марта, 2015 - 12:26:04
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




DelphinPRO пишет:
да к любому. который и будет попапом.
он у меня генерируется, а в самом плагине, зачем паяться и создавать скрытое окно, а потом его выводить??
 
 Top
DelphinPRO
Отправлено: 10 Марта, 2015 - 12:27:59
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




DlTA пишет:
оспорю подобное кодирование,

оспорю ваше оспаривание Улыбка

задача - открыть попап, показать прелоадер, подтянуть данные с сервера, спрятать прелоадер, показать данные. Очевидно, будет удобнее, если у плагина есть отделные методы.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DlTA
Отправлено: 10 Марта, 2015 - 12:30:24
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




DelphinPRO пишет:
Очевидно, будет удобнее, если у плагина есть отделные методы.

я не об этом, а о том что из кода
DelphinPRO пишет:
myPlugin.setContent(html);
myPlugin.show();

получается следующий порядо действий
1 наполнить
2 показать

но ведь это все можно вложить в один вызов
 
 Top
DelphinPRO
Отправлено: 10 Марта, 2015 - 12:33:43
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




можно, кто же спорит Улыбка в конце концов я методы навскидку для примера придумал. Суть в самом их наличии (если нужны, конечно).


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DlTA
Отправлено: 10 Марта, 2015 - 14:50:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




всем пасибки вроде хорошо получается
CODE (javascript):
скопировать код в буфер обмена
  1. (function($){
  2.  
  3.         $.fn.popUpMes = function(htmlText){
  4.                 // куча кода
  5.         }
  6.  
  7.         $.popUpMes = {
  8.                 html :function(html){
  9.                         $().popUpMes(html);
  10.                 }
  11.                 , img: function(src){
  12.                         return $('<img src="'+src+'">').appendTo($().popUpMes(''));
  13.                 }
  14.         };
  15.  
  16. })(jQuery);
  17.  
  18.  
  19. // ну и красота использования
  20. $.popUpMes.img('/img/logo.jpg').css('max-width','50px');
  21. $.popUpMes.html('какой то текст');
 
 Top
DlTA
Отправлено: 10 Марта, 2015 - 21:31:01
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




в общем результат
"код" (Отобразить)

если кто по делу покритикует буду очень рад
особое внимание прошу обратить на метод $.popUpMes.getHtml()
 
 Top
armancho7777777 Супермодератор
Отправлено: 11 Марта, 2015 - 08:30:11
Post Id



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


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


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




DlTA пишет:
$.fn.popUpMes

Зачем Вам метод обёртки, если Вы его все равно не используете по назначению ?

Во-вторых, если на странице могут быть несколько окон, то они должны быть реализованы в виде объектов.
Да и вообще лучше в виде объектов: создал -> показал -> скрыл -> уничтожил.
К тому же код читабельней будет.

DlTA пишет:
оспорю подобное кодирование, когда сначала создается объект а потом вызывается метод отображения,

Считаете, лучше запускать функционал генерации окна при каждом клике лучше,
чем создать объект единожды, для каждой кнопки, и отображать/скрывать по клику ?

Как-то так... (Отобразить)
jQuery.fn.popup (Отобразить)

CODE (javascript):
скопировать код в буфер обмена
  1. $('.buttons').popup({
  2.  
  3.     head: '',
  4.     body: '',
  5.     onOpen: function(){},
  6.     onClose: function(){}
  7.  
  8. });
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 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