I want to change button's background image y position with hover function. Is there a simple way of keeping xpos or should I get position first, split it and use again with $.css() again.
I should change all 3 span's background position if somebody hover's any of them. So bt_first:hover not seems usable.
Here is my usage. I wrote #should stay same# to place that I don't want to change value of xpos:
$('.bt_first,.bt_sec,.bt_third').hover(function(){
$('.bt_first,.bt_sec,.bt_third').css({'background-position':'#should stay same# -150px'})
},function(){
$('.bt_first,.bt_sec,.bt_third').css({'background-position':'#should stay same# -110px'});
});
Here is my html.:
<div><a id="add_comment_btn"><span class="bt_first comments_t"><span> </span></span><span class="bt_sec"> </span><span class="bt_third">Comments</span></a></div>
And css:
.bt_first,.bt_sec,.bt_third,.logout_t,.comments_t span {
background: url('img/toolbar_bckrnd.png') no-repeat;
}
.bt_first {
background-position: left -110px;
display: inline-block;
height: 24px;
width: 15px;
}
.bt_sec {
background-position: -149px -110px;
display: inline-block;
height: 24px;
width: 2px;
}
.bt_third {
background-position: right -110px;
display: inline-block;
height: 24px;
padding: 0 10px;
}
This should work:
$('#add_comment_btn').hover(function(e) {
var s = e.type == 'mouseenter' ? '-134px' : '-110px';
$(this).children().css('background-position', function(i,v) {
return v.replace(/-?\d+px$/, s);
});
});
This applies to the #add_comment_btn
anchor. If you have multiple anchors, just use a class selector to select them all.
btw the above code is basically the same as the code that you posted in your answer. I just got rid of the redundancy.
btw if you don't want to add classes to the anchors, you can select them like so:
$('.bt_first, .bt_sec, .bt_third').parent().hover( .... the above code
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