我正在使用 jQuery 构建产品配置页面,当用户选择相应的颜色选项时,我需要能够更改产品的颜色,在本例中是鞋子。每只鞋都有四个可由用户指定的组成部分。例如。鞋面颜色、鞋底颜色和花边颜色和拼接颜色。我有各种颜色选项的鞋子照片,可以使用标准化的文件命名约定来调用它们,例如:
black-black-black-black.jpg 和 red-black-black-black.jpg black-red-red-red .jpg等
我需要产品照片来记住以前的选择,所以如果访问者选择红色鞋面,那么如果他们选择蓝色鞋底,就会记住这一点。所以最初我们称之为全黑鞋(black-black-black-black.jpg),然后我们在选择红色鞋面时更改该图像(red-black-black-black.jpg),然后再次(red-red- black-black.jpg) 选择红色鞋底时。
我的 jQuery 缩放脚本 (cloudzoom) 使用图像属性来分配大小图像大小。所以我需要用相关文件名替换每个用户选择的这一行,并使该选择具有粘性,直到下一个选项选择。
我已经看了好几天了,如果可能的话,我真的很感激一些帮助。谢谢你。
我的代码在下面,这里有一个工作演示 - http://www.stepto.co.uk/view/product/
jQuery(document).ready(function() {
jQuery('.options ul li a').each(myFunction);
jQuery('.options ul li a').click(function(){
jQuery('.options ul li a').each(myFunction2)
});
});
function myFunction2() {
var embel = jQuery(this).parent().attr("class").split(' ').pop();
jQuery(this).each(function(){
var target = jQuery(this).parent().parent().attr("class");
if(target == "optionset1"){
var base = jQuery(this).parent().attr("class").split(' ').pop();
}
if(target == "optionset3"){
var sole = jQuery(this).parent().attr("class").split(' ').pop();
}
if(target == "optionset4"){
var heel = jQuery(this).parent().attr("class").split(' ').pop();
}
var myattributes2 = "useZoom: '#zoom1', image: 'images/small/" + base + "-" + embel + "-" + sole + "-" + heel + ".jpg', zoomImage: 'images/large/" + base + "-" + embel + "-" + sole + "-" + heel + ".jpg'";
jQuery(this).attr({"class": "cloudzoom-gallery", "href": "#", "data-cloudzoom" : myattributes2});
});
}
function myFunction() {
jQuery(this).each(function(){
var base = "black";
var embel = "black";
var sole = "black";
var heel = "black";
var target = jQuery(this).parent().parent().attr("class");
if(target == "optionset1"){
var base = jQuery(this).parent().attr("class").split(' ').pop();
}
if(target == "optionset2"){
var embel = jQuery(this).parent().attr("class").split(' ').pop();
}
if(target == "optionset3"){
var sole = jQuery(this).parent().attr("class").split(' ').pop();
}
if(target == "optionset4"){
var heel = jQuery(this).parent().attr("class").split(' ').pop();
}
var myattributes2 = "useZoom: '#zoom1', image: 'images/small/" + base + "-" + embel + "-" + sole + "-" + heel + ".jpg', zoomImage: 'images/large/" + base + "-" + embel + "-" + sole + "-" + heel + ".jpg'";
jQuery(this).attr({"class": "cloudzoom-gallery", "href": "#", "data-cloudzoom" : myattributes2});
});
}
<div class="contents" style="width:70%; float:left;">
<div class="theshoe">
<img class="cloudzoom" src="images/small/black-black-black-black.jpg" id="zoom1" data-cloudzoom="zoomImage: 'images/large/black-black-black-black.jpg', zoomSizeMode: 'zoom', zoomOffsetX: 0, zoomOffsetY: 0, zoomFlyOut: false, zoomPosition:'inside'" />
</div>
</div>
<div class="theoptions" style="width:30%; float:left;">
<div class="options">
<h2>Upper Colour</h2>
<ul class="optionset1">
<li class="suedeblack black"><a href="#" class="cloudzoom-gallery">black <img src="images/blank.png"></a></li>
<li class="suedepurple red"><a href="#" class="cloudzoom-gallery">red <img src="images/blank.png"></a></li>
</ul>
<h2>Laces</h2>
<ul class="optionset2">
<li class="studblack black"><a href="#" class="cloudzoom-gallery">black laces <img src="images/blank.png"></a></li>
<li class="studgrey grey"><a href="#" class="cloudzoom-gallery">white laces<img src="images/blank.png"></a></li>
</ul>
<h2>Sole</h2>
<ul class="optionset3">
<li class="soleblack black"><a href="#" class="cloudzoom-gallery">black sole <img src="images/blank.png"></a></li>
<li class="solegrey white"><a href="#" class="cloudzoom-gallery">white sole <img src="images/blank.png"></a></li>
</ul>
<h2>Stitching</h2>
<ul class="optionset4">
<li class="heelblack black"><a href="#" class="cloudzoom-gallery">black stitch <img src="images/blank.png"></a></li>
<li class="heelgrey white"><a href="#" class="cloudzoom-gallery">white stitch <img src="images/blank.png"></a></li>
</ul>
</div>
</div>
</div>
</div>