Я создаю плагин, который заставляет страницу (или элемент) исчезать, когда вы нажимаете на ссылку и исчезаете при загрузке страницы. Код, который у меня есть, не работает на моей демо-странице, поэтому я спрашиваю, можете ли вы взглянуть на него?
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Smoode</title>
<style>
.container{
margin:10px auto;
background:#DDD;
padding:10px;
width:500px;
border:5px solid #000;
}
</style>
</head>
<body>
<div class="container">
<a href="smoode.html" class="smoode">
Smoode!
</a><br />
<a href="smoode.html">Not smoode</a>
</div>
</body>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
(function( $ ){
$.fn.smoode = function() {
var settings = $.extend({
// These are the defaults.
linkClass: "*",
fadeElement: "body",
fadeDuration: "300"
}, options );
$(document).load(function(){
$(settings.fadeElement).hide();
$(settings.fadeElement).fadeIn(settings.fadeDuration);
});
return this.click(function(e){
e.preventDefault();
$(settings.fadeElement).fadeOut(settings.fadeDuration).setTimeout(function() {
window.location.href = $(this).attr("href");
}, settings.fadeDuration);
});
};
})( jQuery );
$(".smoode").smoode({
fadeElement: ".container",
fadeDuration: "1000"
});
</script>
</html>
Я предполагаю, что проблема может быть в том, где я использую "return" и как я вставляю переменные из "настроек", но я не уверен, как это сделать.
Передайте параметры плагину, удалите $(document).load(function(){...
поскольку у документа нет функции onload, и он никогда не запускается, и использовать обратный вызов для анимированных методов, нет необходимости в тайм-ауте (и таймауты не могут быть связаны между собой):
(function ($) {
$.fn.smoode = function (options) {
var settings = $.extend({
linkClass: "*",
fadeElement: "body",
fadeDuration: "300"
}, options);
$(settings.fadeElement).hide().fadeIn(settings.fadeDuration);
return this.click(function (e) {
e.preventDefault();
var self = this;
$(settings.fadeElement).fadeOut(settings.fadeDuration, function () {
window.location.href = self.href;
});
});
};
})(jQuery);
$(function() {
$(".smoode").smoode({
fadeElement: ".container",
fadeDuration: "1000"
});
});
(function ($) {
$.fn.smoode = function (options) {
var settings = $.extend({
// These are the defaults.
linkClass: "*",
fadeElement: "body",
fadeDuration: "300"
}, options);
$(document).load(function () {
$(settings.fadeElement).hide();
$(settings.fadeElement).fadeIn(settings.fadeDuration);
});
return this.click(function (e) {
e.preventDefault();
$(settings.fadeElement).fadeOut(settings.fadeDuration).setTimeout(function () {
window.location.href = $(this).attr("href");
}, settings.fadeDuration);
});
};
})(jQuery);
$(".smoode").smoode({
fadeElement: ".container",
fadeDuration: "1000"
});