我想用悬停功能更改按钮的背景图像y位置。有没有一种简单的方法来保持xpos,或者我应该首先获得位置,拆分并再次使用$ .css()再次使用。
如果有人悬停其中任何一个,我应该更改所有3个跨度的背景位置。所以bt_first:悬停似乎不可用。
这是我的用法。我写了#should保持相同#来放置我不想改变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'});
});
这是我的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>
和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;
}
答案 0 :(得分:3)
这应该有效:
$('#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);
});
});
这适用于#add_comment_btn
锚点。如果您有多个锚点,只需使用类选择器全部选择它们。
顺便说一句,上面的代码与您在答案中发布的代码基本相同。我刚刚摆脱了冗余。
顺便说一句,如果您不想为锚添加类,可以这样选择它们:
$('.bt_first, .bt_sec, .bt_third').parent().hover( .... the above code
答案 1 :(得分:0)
也许是这样的:
var bg = $('#element').css('backgroundPosition').split(' ');
bg[1] = '-200px';
$('#element').css('backgroundPosition', bg.join(' '));
由于背景位置始终以horizontal vertical
的顺序存储,因此第二个数组值始终是垂直值。
虽然这可能仅适用于一个元素。使用多个元素时,您可能需要使用循环。
答案 2 :(得分:0)
我认为没有简单的解决方案,最后找到出路。如果有人需要这个,下面的脚本没问题。
$('.bt_first,.bt_sec,.bt_third').hover(
function(){
var id = $(this).closest('a').attr('id');
var bg1 = $('#'+id+' > .bt_first').css('background-position').split(' ');
var bg2 = $('#'+id+' > .bt_sec').css('background-position').split(' ');
var bg3 = $('#'+id+' > .bt_third').css('background-position').split(' ');
bg1[1] = '-134px';
bg2[1] = '-134px';
bg3[1] = '-134px';
$('#'+id+' > .bt_first').css('background-position', bg1.join(' '));
$('#'+id+' > .bt_sec').css('background-position', bg2.join(' '));
$('#'+id+' > .bt_third').css('background-position', bg3.join(' '));
},
function(){
var id = $(this).closest('a').attr('id');
var bg1 = $('#'+id+' > .bt_first').css('background-position').split(' ');
var bg2 = $('#'+id+' > .bt_sec').css('background-position').split(' ');
var bg3 = $('#'+id+' > .bt_third').css('background-position').split(' ');
bg1[1] = '-110px';
bg2[1] = '-110px';
bg3[1] = '-110px';
$('#'+id+' > .bt_first').css('background-position', bg1.join(' '));
$('#'+id+' > .bt_sec').css('background-position', bg2.join(' '));
$('#'+id+' > .bt_third').css('background-position', bg3.join(' '));
}
);
你应该有一个带有“id”的“a”标签作为所有元素的父级,这些元素也必须是第一个孩子。否则修改脚本。
<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>