Jquery plugin probléma
Sziasztok!
Adott a következő kód
Miért van az, hogy ha kattintok a szövegekre akkor mindig zöld lesz annak ellenére, hogy különböző options lett megadva a paramétereknél.
■ Adott a következő kód
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script>
(function($){
var opts;
//-----------------------------------------------
$.fn.plugintest = function(options)
{
opts = $.extend({}, $.fn.plugintest.defaults, options);
return this.each(function()
{
$(this).bind("click",
function(event)
{
$.fn.dosomething( $(this) );
});
});
};
//-----------------------------------------------
$.fn.dosomething = function(obj)
{
$(obj).css('color', opts.color);
};
//-----------------------------------------------
$.fn.plugintest.defaults =
{
color : 'blue'
};
})(jQuery);
</script>
<script type="text/javascript">
$(document).ready(function() {
$('#box1').plugintest();
$('#box2').plugintest( { color : 'red' } );
$('#box3').plugintest( { color : 'green' } );
});
</script>
<style>
body {font-family:arial;}
</style>
</head>
<body>
<div id="box1">Box1</div>
<div id="box2">Box2</div>
<div id="box3">Box2</div>
</body>
</html>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script>
(function($){
var opts;
//-----------------------------------------------
$.fn.plugintest = function(options)
{
opts = $.extend({}, $.fn.plugintest.defaults, options);
return this.each(function()
{
$(this).bind("click",
function(event)
{
$.fn.dosomething( $(this) );
});
});
};
//-----------------------------------------------
$.fn.dosomething = function(obj)
{
$(obj).css('color', opts.color);
};
//-----------------------------------------------
$.fn.plugintest.defaults =
{
color : 'blue'
};
})(jQuery);
</script>
<script type="text/javascript">
$(document).ready(function() {
$('#box1').plugintest();
$('#box2').plugintest( { color : 'red' } );
$('#box3').plugintest( { color : 'green' } );
});
</script>
<style>
body {font-family:arial;}
</style>
</head>
<body>
<div id="box1">Box1</div>
<div id="box2">Box2</div>
<div id="box3">Box2</div>
</body>
</html>
Miért van az, hogy ha kattintok a szövegekre akkor mindig zöld lesz annak ellenére, hogy különböző options lett megadva a paramétereknél.
Valahogy így...
Gábor
...
Ezzel csak az a baj hogy mindig át kell adni az opts paramétert.
Úgy próbálkoztam még hogy átadtam a data-val az options-t minden elemnek, de biztos kell lennie szebb megoldásnak.
var opts;
//-----------------------------------------------
$.fn.plugintest = function(options)
{
opts = $.extend({}, $.fn.plugintest.defaults, options);
return this.each(function()
{
$(this).data('opts', opts);
$(this).bind("click",
function(event)
{
$.fn.dosomething( $(this) );
});
});
};
//-----------------------------------------------
$.fn.dosomething = function(obj)
{
color=$(obj).data('opts').color;
$(obj).css('color', color);
};
//-----------------------------------------------
$.fn.plugintest.defaults =
{
color : 'blue'
};
})(jQuery);
A data
A szép megoldás az, hogy