Я написал несколько jQuery, которые будут морфировать кнопку в контейнер при нажатии. Теперь я хочу использовать тот же скрипт, но на другой кнопке. Я не уверен, что это лучший способ сделать это. Будет ли это копирование и вставка всего morphObject
, а затем изменение битов, которые нужно изменить для новой кнопки, а затем запустить обе функции инициализации объекта?jQuery morphing button concept
Вот Fiddle: https://jsfiddle.net/2a3rp590/
Вот JQuery:
$(document).ready(function() {
var morphObject = {
button: $('button.morphButton'),
container: $('div.morphContainer'),
overlay: $('div.overlay'),
content: $('h1.content, p.content'),
endPosition: {
top: 100,
left: '50%',
width: 600,
height: 400,
marginLeft: -300
},
init: function() {
var mO = morphObject,
button = mO.button;
button.on('click', function() {
button.fadeOut(200);
setTimeout(mO.containerMove, 200);
});
},
containerMove: function() {
var mO = morphObject,
content = mO.content,
overlay = mO.overlay,
container = mO.container,
span = $('span.close');
overlay.fadeIn();
container.animate(mO.endPosition, 400, function() {
content.fadeIn();
span.fadeIn();
mO.close();
});
},
close: function() {
var mO = morphObject,
container = mO.container,
overlay = mO.overlay,
content = mO.content;
if (container.find('span.close').length) return;
$('<span class="close">X</span>').appendTo(container);
var span = $('span.close');
overlay.add(span).on('click', function() {
content.fadeOut();
span.fadeOut();
overlay.fadeOut();
setTimeout(mO.animateBack, 200);
});
},
animateBack: function() {
var mO = morphObject,
container = mO.container;
button = mO.button;
container.animate(mO.startPosition, 400, function() {
button.fadeIn(300);
});
}
}
var container = morphObject.container;
morphObject.startPosition = {
top: container.css('top'),
left: container.css('left'),
width: container.css('width'),
height: container.css('height'),
marginLeft: container.css('margin-left')
};
morphObject.init();
});
Вы можете увидеть в скрипку, я добавил новую кнопку, контейнер и содержимое. Как заставить мой код работать с несколькими кнопками?
Спасибо.
Ваш 'init' может принимать параметры и передавать их обратно объекту. – lshettyl
Я не думаю, что это сработало бы в моем сценарии – George
Ваш сценарий заключается в повторном использовании части объекта на основе разных входных данных, таких как кнопки, и это очень сработало бы. – lshettyl