我正在为我工作的公司制作一个扩展/折叠呼叫率表。我目前有一个桌子,下面有个按钮来展开它,该按钮说“展开”。除了我需要在单击按钮时将按钮更改为“折叠”,然后在再次单击按钮时将其更改为“展开”之外,此功能正常。按钮上的文字是背景图像。
因此,基本上我需要做的就是在单击div时更改div的背景图像,除了像切换一样。
Aug 9 '10 at 0:42
在SO看到的原因可能是,:(
我正在为我工作的公司制作一个扩展/折叠呼叫率表。我目前有一个桌子,下面有个按钮来展开它,该按钮说“展开”。除了我需要在单击按钮时将按钮更改为“折叠”,然后在再次单击按钮时将其更改为“展开”之外,此功能正常。按钮上的文字是背景图像。
因此,基本上我需要做的就是在单击div时更改div的背景图像,除了像切换一样。
Aug 9 '10 at 0:42
在SO看到的原因可能是,:(
Answers:
$('#divID').css("background-image", "url(/myimage.jpg)");
应该可以解决问题,只需将其挂接到元素的click事件中即可
$('#divID').click(function()
{
// do my image switching logic here.
});
我个人只是使用JavaScript代码在2个类之间切换。
让CSS在div上勾勒出您需要的所有内容,再减去背景规则,然后添加两个类(例如:展开和折叠)作为规则,每个类具有正确的背景图像(或背景位置(如果使用精灵))。
带有不同图像的CSS
.div {
/* button size etc properties */
}
.expanded {background: url(img/x.gif) no-repeat left top;}
.collapsed {background: url(img/y.gif) no-repeat left top;}
或带有图片精灵的CSS
.div {
background: url(img/sprite.gif) no-repeat left top;
/* Other styles */
}
.expanded {background-position: left bottom;}
然后...
带图像的JavaScript代码
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).addClass('collapsed').removeClass('expanded');
}
else
{
$(this).addClass('expanded').removeClass('collapsed');
}
});
}
带精灵的JavaScript
注意:优雅的toggleClass在Internet Explorer 6中不起作用,但是下面的addClass
/ removeClass
方法在这种情况下也可以正常工作
最优雅的解决方案(不幸的是,Internet Explorer 6不友好)
$(function){
$('#button').click(function(){
$(this).toggleClass('expanded');
});
}
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).removeClass('expanded');
}
else
{
$(this).addClass('expanded');
}
});
}
据我所知,此方法将可在所有浏览器中使用,并且与使用脚本中的URL更改相比,使用CSS和类玩起来更舒服。
有两种使用jQuery更改背景图片CSS的方法。
$('selector').css('backgroundImage','url(images/example.jpg)');
$('selector').css({'background-image':'url(images/example.jpg)'});
仔细查看以注意差异。在第二种方法中,您可以使用常规CSS并将多个CSS属性串在一起。
这是我的方法:
的CSS
#button{
background-image: url("initial_image.png");
}
#button.toggled{
background-image:url("toggled_image.png");
}
JS
$('#button').click(function(){
$('#my_content').toggle();
$(this).toggleClass('toggled');
});
.toggleClass()
功能。
一种方法是将两个图像都放在HTML中,放在SPAN或DIV中,您可以在页面加载时使用CSS或JS隐藏默认图像。然后,您可以点击一下。这是我用来将左/下图标放在列表中的类似示例:
$(document).ready(function(){
$(".button").click(function () {
$(this).children(".arrow").toggle();
return false;
});
});
<a href="#" class="button">
<span class="arrow">
<img src="/images/icons/left.png" alt="+" />
</span>
<span class="arrow" style="display: none;">
<img src="/images/down.png" alt="-" />
</span>
</a>
这适用于WinXP上的所有当前浏览器。基本上只是检查当前背景图像是什么。如果是image1,则显示image2,否则显示image1。
jsapi只是从Google CDN加载jQuery(更易于在桌面上测试misc文件)。
替换用于跨浏览器兼容性(操作符和即在URL中添加引号,而Firefox,chrome和safari则删除引号)。
<html>
<head>
<script src="http://www.google.com/jsapi"></script>
<script>
google.load("jquery", "1.2.6");
google.setOnLoadCallback(function() {
var original_image = 'url(http://stackoverflow.com/Content/img/wmd/link.png)';
var second_image = 'url(http://stackoverflow.com/Content/img/wmd/code.png)';
$('.mydiv').click(function() {
if ($(this).css('background-image').replace(/"/g, '') == original_image) {
$(this).css('background-image', second_image);
} else {
$(this).css('background-image', original_image);
}
return false;
});
});
</script>
<style>
.mydiv {
background-image: url('http://stackoverflow.com/Content/img/wmd/link.png');
width: 100px;
height: 100px;
}
</style>
</head>
<body>
<div class="mydiv"> </div>
</body>
</html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
我确实使用正则表达式进行挖掘,因为我想保留相对路径而不使用add addClass函数。我只是想让它复杂,大声笑。
$(".travelinfo-btn").click(
function() {
$("html, body").animate({scrollTop: $(this).offset().top}, 200);
var bgImg = $(this).css('background-image')
var bgPath = bgImg.substr(0, bgImg.lastIndexOf('/')+1)
if(bgImg.match(/collapse/)) {
$(this).stop().css('background-image', bgImg.replace(/collapse/,'expand'));
$(this).next(".travelinfo-item").stop().slideToggle(400);
} else {
$(this).stop().css('background-image', bgImg.replace(/expand/,'collapse'));
$(this).next(".travelinfo-item").stop().slideToggle(400);
}
}
);
旧帖子,但这将允许您使用图像精灵,并通过使用CSS属性(背景,重复,左上角)的简写来调整重复以及位置。
$.each($('.smallPreview'), function(i){
var $this = $(this);
$this.mouseenter(function(){
$this.css('background', 'url(Assets/imgs/imgBckg-Small_Over.png) no-repeat 0 0');
});
$this.mouseleave(function(){
$this.css('background', 'url(Assets/imgs/imgBckg-Small.png) no-repeat 0 0');
});
});
我在Toggle Background Img论坛中找到了一个解决方案。
这是一个相当简单的响应,它使用项目列表更改了网站的背景
function randomToN(maxVal) {
var randVal = Math.random() * maxVal;
return typeof 0 == 'undefined' ? Math.round(randVal) : randVal.toFixed(0);
};
var list = [ "IMG0.EXT", "IMG2.EXT","IMG3.EXT" ], // Images
ram = list[parseFloat(randomToN(list.length))], // Random 1 to n
img = ram == undefined || ram == null ? list[0] : ram; // Detect null
$("div#ID").css("backgroundImage", "url(" + img + ")"); // push de background