Comments 18
Ничего нового.
-5
Разумно было бы выложить код на GitHub.
+1
Рекомендую почитать про оптимизацию кода при работе с jQuery — на ваш смотреть страшно.
+4
Демки нет?
0
Я конечно придираюсь, но такой код лично мне режет глаз:
if ($(this).data('collapsed') == true) {
...
+1
var defaultHeight = $(control).css('defaultHeight');
Вы наверное хотели написать data вместо css?
Вы наверное хотели написать data вместо css?
+1
o_O Мне иногда проще самому написать плагин, чем париться и искать что-то. Особенно такой простой, как спойлер).
> typeof method === 'object'
Используйте: Object.prototype.toString.call(method) == '[object Object]'
Иначе — например typeof new Number(2) или typeof new String('') вернёт 'object'.
И да, в код не особо вглядывался, но мне кажется, что всё это можно было написать покороче).
> typeof method === 'object'
Используйте: Object.prototype.toString.call(method) == '[object Object]'
Иначе — например typeof new Number(2) или typeof new String('') вернёт 'object'.
И да, в код не особо вглядывался, но мне кажется, что всё это можно было написать покороче).
0
Это миф, что jquery кэширует объекты, возьмем самый большой кусок кода и увидим:
$(this)
— 19 раз (где-то разные контексты, но смысл понятен, каждый такой селектор дергает DOM)var spoiler = $(this).parent();
— он уже jquery объект, а Вы его хотите ещё сильнее завернуть $(spoiler)
аж 10 разvar Control = $(this).find('.spoilerControl');
— такая же история $(Control)
+3
$('.toggler').click(function(e){
var $this = $(this);
e.preventDefault();
$($this.attr('href')).slideToggle();
});
И HTML:
<a class="toggler" href="#spoiler">Показать то, что скрыто</a>
<div id="spoiler">
Спрятанный контент
</div>
Вот и весь спойлер. У вас же получилось ненамного меньше, чем у того же jQUI
+4
Понимаю, что тема статьи скорее о создании плагина в целом чем о описанном плагине, но…
В сторону bootstrap не смотрели? Есть там такой плагин collapse.
Умеет.
Кликабельная полоса создается с помощью разметки и css и видна еще до момента загрузки джаваскрипта. Позволяет использовать не только текст, но и любой другой контент.
Управляется с помощью css, что дает преимущество изначально скрытого или открытого контента еще до загрузки джаваскрипта.
Умеет.
Кроме того можно подключить с помощью data-api(не нужно писать ни строчки джаваскрипта), не зависит от сторонних библиотек кроме jquery(можно даже поключить отдельно от других bootstrap плагинов), lazy-load если подключать через data-api — не создается объект до первого клика по триггеру, возможно построить на его основе accordion, когда может быть открыт контент только одного елемента из группы.
В сторону bootstrap не смотрели? Есть там такой плагин collapse.
Во-первых, он должен уметь скрывать/раскрывать блоки с информацией.
Умеет.
Во-вторых, он должен уметь генерировать кликабельную полосу (блок) для управления спойлером (ну а какой же спойлер обойдется без этого).
В-третьих, должна быть возможность писать текст на кликабельном блоке (что совсем по взрослому все было).
Кликабельная полоса создается с помощью разметки и css и видна еще до момента загрузки джаваскрипта. Позволяет использовать не только текст, но и любой другой контент.
В-четвертых, должна быть возможность управлять изначальным состоянием открыть/закрыт при инициализации плагина.
Управляется с помощью css, что дает преимущество изначально скрытого или открытого контента еще до загрузки джаваскрипта.
Ну и на вкусненькое, пусть будет анимация открытия/закрытия с возможностью отключения.
Умеет.
Кроме того можно подключить с помощью data-api(не нужно писать ни строчки джаваскрипта), не зависит от сторонних библиотек кроме jquery(можно даже поключить отдельно от других bootstrap плагинов), lazy-load если подключать через data-api — не создается объект до первого клика по триггеру, возможно построить на его основе accordion, когда может быть открыт контент только одного елемента из группы.
0
Bootstrap смотрел и использую во многих проектах. Но как написано в посте, тащить за собой большое количество скриптов, стилей и картинок не всегда оправдано.
А так в общем и целом вы правы.
А так в общем и целом вы правы.
0
Так и не надо ничего тащить за собой, достаточно bootstrap-collapse.js. Данный фреймворк удобен в использовании, можно использовать любой функционал не таща за собой все остальное.
0
Мне больше нравится подход JUI, когда для каждого элемента создается объект и сохраняется в data, избавляет от кучи головной боли.
Для своих плагинов использую небольшую обертку, заимствующую идеи widget factory и backbone/underscore:
gist.github.com/oWeRQ/5399632 (если кого-то заинтересует, прокомментирую код в непонятных местах и добавлю описание)
Для своих плагинов использую небольшую обертку, заимствующую идеи widget factory и backbone/underscore:
gist.github.com/oWeRQ/5399632 (если кого-то заинтересует, прокомментирую код в непонятных местах и добавлю описание)
0
Sign up to leave a comment.
Еще раз о создании jQuery плагина или применяем на практике