|
|
|
Помогите разобраться с селектом.
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Есть код селекта , не могу разобраться как добавить доп. классы и новый атрибут data-filter="." в каждый элемент селекта. jQuery(function() { initNavigationSelect(); }); // generate select from navigation function initNavigationSelect() { jQuery('.nav-list').navigationSelect({ activeClass: 'nav-active', defaultOptionAttr: 'title', levelIndentHTML: ' • ' }); } /* * Convert navigation to select */ ;(function($) { function NavigationSelect(options) { this.options = $.extend({ list: null, levelIndentHTML: ' • ', defaultOptionAttr: 'title', defaultOptionText: '...', selectClass: 'nav-select', activeClass: 'nav-active', defaultOptionClass: 'opt-default', hasDropClass: 'opt-sublevel', levelPrefixClass: 'opt-level-', useDefaultOption: true }, options); if(this.options.list) { this.createSelect(); this.attachEvents(); } } NavigationSelect.prototype = { createSelect: function() { var self = this; this.startIndex = 0; this.navigation = $(this.options.list); this.select = $('<select>').addClass(this.options.selectClass); this.createDefaultOption(); this.createList(this.navigation, 0); this.select.insertBefore(this.navigation); }, createDefaultOption: function() { if(this.options.useDefaultOption) { var attrText = this.navigation.attr(this.options.defaultOptionAttr); var defaultOption = $('<option>').addClass(this.options.defaultOptionClass).text(attrText || this.options.defaultOptionText); this.navigation.removeAttr(this.options.defaultOptionAttr); this.select.append(defaultOption); this.startIndex = 1; } }, createList: function(list, level) { var self = this; list.children().each(function(index, item) { var listItem = $(this), listLink = listItem.find('a').eq(0), listDrop = listItem.find('ul').eq(0), hasDrop = listDrop.length > 0; if(listLink.length) { self.select.append(self.createOption(listLink, hasDrop, level, listLink.hasClass(self.options.activeClass))); } if(hasDrop) { self.createList(listDrop, level + 1); } }); }, createOption: function(link, hasDrop, level, selected) { var optionHTML = this.getLevelIndent(level) + link.html(); return $('<option>').html(optionHTML) .addClass(this.options.levelPrefixClass + (level + 1)) .toggleClass(this.options.hasDropClass, hasDrop) .val(link.attr('href')).attr('selected', selected ? 'selected' : false); }, getLevelIndent: function(level) { return (new Array(level + 1)).join(this.options.levelIndentHTML); }, attachEvents: function() { // redirect on select change var self = this; this.select.change(function() { if(this.selectedIndex >= self.startIndex) { location.href = this.value; } }); } }; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 11:34 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=39556753&tid=1444386]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 473ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...