将图像设置为同级元素的背景
set image as a background of a sibling element
我的目标是让用户选择背景,但我的js不起作用。
<div class="step">
</div>
<div id="images">
<img src="" data-src="">
<img src="" data-src="">
<img src="" data-src="">
<img src="" data-src="">
</div>
<div class="step">
</div>
<div class="step">
</div>
图像div 是动态的,应始终更改之前 .step 的图像。
这是我的越野车JS:
$(document).on('click', '#images img', function(){
var src = $(this).data('src');
$(this).before().find('.step').css("background" , "url("+src+")");
});
我认为您选择的是错误的,并且在 before(( 附加元素。
$(this).parent().prev('.step').css("background" , "url("+src+")");
基本解释
$(this) //the image
.parent() // the div #images
.prev('.step') //get the previous sibling with the class step
.css("background" , "url("+src+")");
如果你想要所有的 .step 元素,你可以使用 .siblings(".step")
而不是.prev(".step")
我想你想要prev((,而不是before((
$(this).parent()
会给你保存图像的div,.prev('.step')
给你上一个元素的类步骤。 before()
仅用于在匹配元素集中的每个元素之前插入。
$(this).parent().prev('.step').css("background" , "url("+src+")");
.before()
方法插入内容,它找不到较早的元素。您需要.prev()
方法,请注意它找到前一个同级,因此您需要遍历.parent()
:
$(this).parent().prev().css("background" , "url("+src+")");
演示:http://jsfiddle.net/DBRkS/
请注意,.prev()
在找到匹配元素之前不会向后搜索,如果它与您提供的选择器匹配,它会选择紧靠前面的同级元素,否则它不返回任何内容。因此,对于您显示的html,无论是否使用".step"
选择器,它都可以正常工作。
相关文章:
- 如何使用css动画/javascript使具有背景图像的元素出现
- 使用li元素的html内容更改该元素的背景
- Javascript获取元素背景图像,但消除了“;url()”;
- 如何获取元素:使用javascript和CORS悬停背景
- "隐藏/显示”;元素和更改按钮背景图像
- 绘制DOM元素:鼠标事件会被背景元素混淆
- 如何在每次页面重新加载时更改渐变背景,同时保持光标位置元素处于活动状态
- Angular Bootstrap$modal与活动背景元素
- 防止鼠标与透明元素背景交互
- 使用 JS 获取 Html 元素背景颜色
- JavaScript 更改元素背景点击调用函数
- 在浏览器中以一致格式获取元素背景颜色的可靠方法
- 如何在单击并悬停时更改td元素背景
- jQuery未更改元素背景颜色
- 从元素背景中抓取图像元素作为DOM资源
- 设置元素背景的alpha值,但不改变其样式.背景值
- Javascript改变元素背景
- jquery-使用elementFromPoint按id更改元素背景颜色
- jQuery .css() 不会更改元素背景颜色
- 创建元素背景图像