Доброго времени суток, сейчас столкнулся с такой задачей, я хочу переписать один скрипт, который будет позоционировать 'active_elem' относительно элемента который будет на странице
Первая версия как мне кажется не совсем корректная и её можно сократить, я решил сделать след. образом
Поместить все элементы в 1 объект и уже делать проверку по его элементам и в случае если проверка успешна, позиционировать
И начал переписывать, но скрипт отказывается работать
Вот первая версия кода
var activeElement = jQuery('.nav-horizontal .menu li a.active'),
activeElementBlog = jQuery('.nav-horizontal .menu li.menu-item-type-taxonomy.current-menu-item'),
activeElementPost = jQuery('.nav-horizontal .menu li.menu-item-type-taxonomy.current-post-ancestor'),
activeElementCategory = jQuery('.nav-horizontal .menu li.menu-item-type-taxonomy.current-category-ancestor')
if (activeElement.length) {
var positionActiveElement = activeElement.position().left,
widthActiveElement = activeElement.width();
jQuery('.active_elem').css({
'width': widthActiveElement,
'margin-left' : positionActiveElement
})
} else if (activeElementBlog.length) {
var positionActiveElementBlog = activeElementBlog.position().left,
widthActiveElementBlog = activeElementBlog.width();
jQuery('.active_elem').css({
'width': widthActiveElementBlog,
'margin-left' : positionActiveElementBlog
})
} else if (activeElementPost.length) {
var positionActiveElementPost = activeElementPost.position().left,
widthActiveElementPost = activeElementPost.width();
jQuery('.active_elem').css({
'width': widthActiveElementPost,
'margin-left' : positionActiveElementPost
})
} else if (activeElementCategory.length) {
var positionActiveElementCategory = activeElementCategory.position().left,
widthActiveElementCategory = activeElementCategory.width();
jQuery('.active_elem').css({
'width': widthActiveElementCategory,
'margin-left' : positionActiveElementCategory
})
}
else {
jQuery('.active_elem').css({
'width': 0
})
}
Вторая версия(которую пытаюсь заставить работать)
var activeElements = new Object();
activeElements.main = jQuery('.nav-horizontal .menu li a.active'),
activeElements.Blog = jQuery('.nav-horizontal .menu li.menu-item-type-taxonomy.current-menu-item'),
activeElements.Post = jQuery('.nav-horizontal .menu li.menu-item-type-taxonomy.current-post-ancestor'),
activeElements.Category = jQuery('.nav-horizontal .menu li.menu-item-type-taxonomy.current-category-ancestor')
for (var elementMenu in activeElements) {
if (elementMenu.length) {
var position = elementMenu.position().left,
width = elementMenu.width();
jQuery('.active_elem').css({
'width' : width,
'margin-left' : position
})
} else {
jQuery('.active_elem').css({
'width': 0
})
}
}