Show/Hide 按钮基于 Select 值
Show/Hide button based on Select value
在我的 Shopify 商店中,我有一个 for 循环,它将针对页面上的每个产品显示。对于每个产品,在底部,我有一个 select
,它将确定每个产品的计费频率。当前有 3 个产品,如果重要:
<select id="ma" class="single-option-selector" name="frequency">
<option value="">Monthly</option>
<option value="annual">Annual - 1 Month Free</option>
</select>
然后我有 'Continue' 个按钮,我想根据 selected 选项(每月或每年)显示这些按钮
<a href="{{ product.url | within: collection }}" class="monthly-btn btn">
<span id="AddToCartText">Select Plan</span>
</a>
<a href="{{ product.url | within: collection | append: '-annual' }}" class="annual-btn btn">
<span id="AddToCartText">Select Plan</span>
</a>
我正在寻找能够根据当前 selected 选项隐藏和显示按钮的正确脚本。这是我现在没有做任何事情的东西(我已经通过在其中添加警报来确认 - 更改值时我没有收到任何警报弹出窗口)
<script>
$(document).ready( function () {
$('.annual-btn').each( function() {
$(this).hide();
});
});
$('#ma').each( function() {
$(this).change( function () {
var valx = $(this).val()
if (valx == 'annual') {
$('.monthly-btn').hide();
$('.annual-btn').show();
alert('test');
} else {
$('.monthly-btn').show();
$('.annual-btn').hide();
alert('test2');
}
});
});
</script>
此外,我尝试了所有可能的组合,包括将 .each()、.change() 添加到函数中,以及直接从 select 调用函数(因此 onchange="changeFunction();"
).谁能帮帮我?
在 select
中添加更改功能
<select id="ma" onchange="somefunction()" class="single-option-selector" name="frequency">
<option value="monthly">Monthly</option>
<option value="annual">Annual - 1 Month Free</option>
</select>
<script>
somefunction(){
if($("#ma").val() === "monthly"){
$(".monthly-btn").show();
$(".annual-btn").hide();
}else{
$(".monthly-btn").hide();
$(".annual-btn").show();
}
}
</script>
您不需要使用 'each()' 功能。此外,添加到 DOM 元素的任何事件侦听器都应包装在
中
$(document).ready(function(){ ... code goes here ...});
或它的快捷方式:
$(function(){ ... code goes here ...});
否则添加事件监听时元素可能不存在。
我个人会使用 css 隐藏年度按钮
.annual-btn { display: none; }
那么你的javascript会是这样的:
$(function(){
$('#ma').change(function(){
var opt = $(this).val();
if(opt == 'annual'){
$('.monthly-btn').hide();
$('.annual-btn').show();
}else{
$('.monthly-btn').show();
$('.annual-btn').hide();
}
});
});
这是一个有效的 fiddle:http://jsfiddle.net/qyb83hxv/1/
在我的 Shopify 商店中,我有一个 for 循环,它将针对页面上的每个产品显示。对于每个产品,在底部,我有一个 select
,它将确定每个产品的计费频率。当前有 3 个产品,如果重要:
<select id="ma" class="single-option-selector" name="frequency">
<option value="">Monthly</option>
<option value="annual">Annual - 1 Month Free</option>
</select>
然后我有 'Continue' 个按钮,我想根据 selected 选项(每月或每年)显示这些按钮
<a href="{{ product.url | within: collection }}" class="monthly-btn btn">
<span id="AddToCartText">Select Plan</span>
</a>
<a href="{{ product.url | within: collection | append: '-annual' }}" class="annual-btn btn">
<span id="AddToCartText">Select Plan</span>
</a>
我正在寻找能够根据当前 selected 选项隐藏和显示按钮的正确脚本。这是我现在没有做任何事情的东西(我已经通过在其中添加警报来确认 - 更改值时我没有收到任何警报弹出窗口)
<script>
$(document).ready( function () {
$('.annual-btn').each( function() {
$(this).hide();
});
});
$('#ma').each( function() {
$(this).change( function () {
var valx = $(this).val()
if (valx == 'annual') {
$('.monthly-btn').hide();
$('.annual-btn').show();
alert('test');
} else {
$('.monthly-btn').show();
$('.annual-btn').hide();
alert('test2');
}
});
});
</script>
此外,我尝试了所有可能的组合,包括将 .each()、.change() 添加到函数中,以及直接从 select 调用函数(因此 onchange="changeFunction();"
).谁能帮帮我?
在 select
中添加更改功能<select id="ma" onchange="somefunction()" class="single-option-selector" name="frequency">
<option value="monthly">Monthly</option>
<option value="annual">Annual - 1 Month Free</option>
</select>
<script>
somefunction(){
if($("#ma").val() === "monthly"){
$(".monthly-btn").show();
$(".annual-btn").hide();
}else{
$(".monthly-btn").hide();
$(".annual-btn").show();
}
}
</script>
您不需要使用 'each()' 功能。此外,添加到 DOM 元素的任何事件侦听器都应包装在
中$(document).ready(function(){ ... code goes here ...});
或它的快捷方式:
$(function(){ ... code goes here ...});
否则添加事件监听时元素可能不存在。
我个人会使用 css 隐藏年度按钮
.annual-btn { display: none; }
那么你的javascript会是这样的:
$(function(){
$('#ma').change(function(){
var opt = $(this).val();
if(opt == 'annual'){
$('.monthly-btn').hide();
$('.annual-btn').show();
}else{
$('.monthly-btn').show();
$('.annual-btn').hide();
}
});
});
这是一个有效的 fiddle:http://jsfiddle.net/qyb83hxv/1/