1 回答
TA贡献1836条经验 获得超5个赞
在此解决方案中,首先您必须创建一个变量并使用它来放置.custom_config页面中的活动数量。
例如,在 init 情况下,您必须激活第一个,当您第一次单击下一个按钮时,第二个按钮等等。
因此,创建此变量并将其设置为 1(您的初始值)并完成您的初始情况(即,第一个.custom_config活动和.back&#checkoutbtn隐藏):
$(".back, #checkoutbtn").hide();
$(".custom_config:nth-of-type(1)").addClass("open");
var i = 1;
之后,您必须创建一个函数来检查变量编号更改其值时会发生什么。所有控件都在这个函数中(我注释了每一行)
function control(){
if(i <= 1){
// if i is equals to or smaller than 1...
i = 1; // ...put i always equals to 1...
$(".back").hide() // ...hide .back button
$(".next").show(); // ...show .next button
} else if (i >= $(".custom_config").length){
// if i is equals to or greater than the .custom_config length...
i = $(".custom_config").length; // ...put i always equals to your .custom_config length
$("#checkoutbtn").show(); // ...then show checkoutbtn
$(".next").hide(); // ...hide next button
} else {
// in all other cases...
$("#checkoutbtn").hide(); // hide checkout button
$(".back, next").show(); // show back & next button
}
$(".custom_config").removeClass("open"); // after that always remove class open to all your .custom_config div...
$(".custom_config:nth-of-type("+i+")").addClass("open"); //and put it to correct .custom_config that you need to see
}
现在你的.next和.back按钮只需要从你的变量中添加或删除一个单位:
$(".next, .back").on("click", function(e){
if($(this).hasClass("next")) i ++;
else i --;
control();
});
编辑 1 对于您在评论中谈到的问题,请尝试添加e.preventDefault();到功能:
$(".next, .back").on("click", function(e){
e.preventDefault(); //add this line
if($(this).hasClass("next")) i ++;
else i --;
control();
});
还添加$(".next").show();到函数control以防止我注意到的一个小错误。我用这些更改重写了代码段,试试看:
$(".back, #checkoutbtn").hide();
$(".custom_config:nth-of-type(1)").addClass("open");
var i = 1;
$(".next, .back").on("click", function(e){
e.preventDefault();
if($(this).hasClass("next")) i ++;
else i --;
control();
});
function control(){
if(i <= 1){
i = 1;
$(".back").hide()
$(".next").show();
} else if (i >= $(".custom_config").length){
i = $(".custom_config").length;
$(".next").hide();
$("#checkoutbtn").show();
} else {
$("#checkoutbtn").hide();
$(".back, .next").show();
}
$(".custom_config").removeClass("open");
$(".custom_config:nth-of-type("+i+")").addClass("open");
}
/* you can remove these CSS */
.custom_config:nth-of-type(1){
background-color:red;
}
.custom_config:nth-of-type(2){
background-color:yellow;
}
.custom_config:nth-of-type(3){
background-color:green;
}
/* you can remove these CSS */
.custom_config{
display:none;
}
.open{
display:block;
}
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<form method="post" action="/cart/add" id="12345" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data">
<input type="hidden" name="form_type" value="product">
<input type="hidden" name="utf8" value="✓">
<section class="custom_config">
<ul>
<li><input class="choice" id="keep" type="radio" name="properties[Background]" value="keep" required="">
<label for="keep">Keep</label></li>
<li><input class="choice" id="remove" type="radio" name="properties[Background]" value="remove" required="">
<label for="remove">Remove</label></li>
</ul>
</section>
<section class="custom_config"> Content 2 </section>
<section class="custom_config"> Content 3 </section>
<button class="back">Back</button>
<button class="next">Next</button>
<button id="checkoutbtn" type="submit" class="btn btn-lg js-add-to-cart-product-page" data-product-handle="custom" data-variant-id="20262476120160" title="Add to Cart"><span>Add to Cart</span></button>
</form>
添加回答
举报