Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Помогите разобраться с селектом. / 2 сообщений из 2, страница 1 из 1
14.11.2017, 11:34
    #39552772
DmitriyKo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с селектом.
Доброго времени суток. Есть код селекта , не могу разобраться как добавить доп. классы и новый атрибут 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;
}
});
}
};
...
Рейтинг: 0 / 0
21.11.2017, 12:55
    #39556753
Alexander70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с селектом.
DmitriyKo, не понимаю, что такое доп. классы, а с атрибутами data-* можно работать через элемент element.dataset.Часть_Имени_Атрибута_После_data.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Помогите разобраться с селектом. / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]