I have a div with a background, and I'd like to change the background's position on click.
This is my jQuery snippet :
$('#sprite').click(function () {
$(this).css('backgroundPosition', '-40px');
});
While this is working ok, I'd like to return to the original position with a 'second' click, resetting all.
Mmm, is this what's called a 'callback' right?
I tried so with that but it didn't work :
$('#sprite').click(function () {
$(this).css('backgroundPosition', '-40px');
},function () {
$(this).css('backgroundPosition', '40px');
});
You should consider using a "toggle" function for this... It'll allow you to go between 2 different CSS classes... Check out this tutorial here.
$('#sprite').click(function() {
$(this).toggle(
function(){
$(this).css('backgroundPosition', '40px');
},
function () {
$(this).css('backgroundPosition', '-40px');
});
});
Another option rather than setting the CSS property directly would be to create a CSS class for your background and simply toggle that class.
<style type="text/css">
.spritebg { background-position: -40px; }
</style>
$("#spite").click(function() {
$(this).toggleClass("spritebg");
});
You're mis-understanding the concept of a callback. A callback in programming is a function that gets called immediately after the executing code.
In your case, you're saying the following:
On click, set my background position to -40px. Once you're done with that, set it to 40px (immediately undoing what your function just did).
In this case, you don't need to use a callback function. You need to set up a toggle so that when the user clicks on your element, one function is run...then the next time they click on that element, the second function is run.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With