Я работаю над проектом, где у меня есть страница, где коллеги рассказывают о себе и своей компании. Я использую карусельный слайдер с изображениями своих коллег, и если вы нажмете одно из изображений, другие DIV должны появиться с информацией, характерной для этого человека, но на данный момент я тестировал ее только с разными именами люди.Напишите код jquery короче
У меня было это работает, но мой код получил verrrrry long, поэтому моя цель - написать мой код намного короче. Я пытаюсь получить ПРЕД и следующих элементов массива, который я нашел в этом вопросе: get prev and next items in array
Здесь у меня есть моя длинная версия:
var collegaNaamArray = [
"#naam1",
"#naam2",
"#naam3",
"#naam4",
"#naam5"];
$(collegaNaamArray.join(", ")).hide();
$(collegaNaamArray[0]).show();
$(collegaNaamArray[0]).animate({
opacity: 0
}, 0);
$(collegaNaamArray[0]).animate({
opacity: 1
}, 'slow');
$('#collega1').on('click', function (e) {
e.preventDefault();
$(collegaNaamArray.join(", ")).hide();
$(collegaNaamArray[0]).show();
$(collegaNaamArray[0]).animate({
opacity: 0
}, 0);
$(collegaNaamArray[0]).animate({
opacity: 1
}, 'slow');
});
$('#collega2').on('click', function (e) {
e.preventDefault();
$(collegaNaamArray.join(", ")).hide();
$(collegaNaamArray[1]).show();
$(collegaNaamArray[1]).animate({
opacity: 0
}, 0);
$(collegaNaamArray[1]).animate({
opacity: 1
}, 'slow');
});
$('#collega3').on('click', function (e) {
e.preventDefault();
$(collegaNaamArray.join(", ")).hide();
$(collegaNaamArray[2]).show();
$(collegaNaamArray[2]).animate({
opacity: 0
}, 0);
$(collegaNaamArray[2]).animate({
opacity: 1
}, 'slow');
});
$('#collega4').on('click', function (e) {
e.preventDefault();
$(collegaNaamArray.join(", ")).hide();
$(collegaNaamArray[3]).show();
$(collegaNaamArray[3]).animate({
opacity: 0
}, 0);
$(collegaNaamArray[3]).animate({
opacity: 1
}, 'slow');
});
$('#collega5').on('click', function (e) {
e.preventDefault();
$(collegaNaamArray.join(", ")).hide();
$(collegaNaamArray[4]).show();
$(collegaNaamArray[4]).animate({
opacity: 0
}, 0);
$(collegaNaamArray[4]).animate({
opacity: 1
}, 'slow');
});
http://jsfiddle.net/sxypckn6/1/
$('#collega1').on('click', function(e) {
e.preventDefault();
$(collegaNaamArray.join(", ")).hide();
$(collegaNaamArray[0]).show();
$(collegaNaamArray[0]).animate({ opacity: 0 }, 0);
$(collegaNaamArray[0]).animate({ opacity: 1 }, 'slow');
});
И здесь моя короткая версия, которая, к сожалению, еще не работает:
var collegaNaamArray = [
"#naam1",
"#naam2",
"#naam3",
"#naam4",
"#naam5"];
$(collegaNaamArray.join(", ")).hide();
$(collegaNaamArray[0]).show();
$(collegaNaamArray[0]).animate({
opacity: 0
}, 0);
$(collegaNaamArray[0]).animate({
opacity: 1
}, 'slow');
$(".collegafoto").each(function() {
var start = '#naam1';
var prevInfo = collegaNaamArray[($.inArray(start, collegaNaamArray) - 1 + collegaNaamArray.length) % collegaNaamArray.length];
var nextInfo = collegaNaamArray[($.inArray(start, collegaNaamArray) + 1) % collegaNaamArray.length];
var prevFoto = $(this).prev();
var nextFoto = $(this).next();
$(prevFoto).on('click', function() {
$(collegaNaamArray.join(", ")).hide();
$(prevInfo).show();
$(prevInfo).animate({
opacity: 0
}, 0);
$(prevInfo).animate({
opacity: 1
}, 'slow');
});
$(nextFoto).on('click', function() {
$(collegaNaamArray.join(", ")).hide();
$(nextInfo).show();
$(nextInfo).animate({
opacity: 0
}, 0);
$(nextInfo).animate({
opacity: 1
}, 'slow');
});
});
Я предполагаю, что проблема находится где-то в этой части:
var prevFoto = $(this).prev();
var nextFoto = $(this).next();
Я знаю, что я не выбрать предыдущую и следующую картину в правильном направлении, но я не знаю, как еще Я должен сделать это.
спасибо, что заблаговременно!
Этот вопрос принадлежит на [codereview.se] – MarioDS
@MDeSchaepmeester Если код не работает, он принадлежит здесь. – Barmar
@ Бармар согласился, но у него длинная версия, которая работает, и это то, что нужно пересмотреть. – MarioDS