jQuery 选择选项,更改 html 内容。我究竟做错了啥?

Posted

技术标签:

【中文标题】jQuery 选择选项,更改 html 内容。我究竟做错了啥?【英文标题】:jQuery select option, change html content. What am i doing wrong?jQuery 选择选项,更改 html 内容。我究竟做错了什么? 【发布时间】:2012-04-07 02:55:38 【问题描述】:

我以为就这么简单……

$('#yourSelect').change(function () 
    if ($(this).val() == '12500', '8500', '7000') 
        $("#textBox").html("+ £10 delivery");
     else 
        $("#textBox").html("+ £6 delivery");
    
);

前面

<select name="Amount" id="yourSelect">
    <option value="5000">5000</option>
    <option value="6000">6000</option>
    <option value="7000">7000</option>
    <option value="8500">8500</option>
    <option value="12500">12500</option>
</select>

<div id="textBox">+ £6 delivery</div>

我是不是疯了?这里有什么问题?

【问题讨论】:

【参考方案1】:

您需要使用|| 运算符,而不是if ($(this).val() == '12500', '8500', '7000')

$('#yourSelect').change(function() 
    var value = $(this).val();
    if (value == '12500' || value == '8500' || value == '7000') 
        $("#textBox").html("+ £10 delivery");
    
    else 
        $("#textBox").html("+ £6 delivery");
    
);​

正如 @hafichuk 所评论的,您可以将值解析为数字并使用更简单的条件:

if (parseInt($(this).val(), 10) >= 7000)
    $("#textBox").html("+ £10 delivery");
else
    $("#textBox").html("+ £6 delivery");

你可以让它变得更简单:

var output = parseInt($(this).val(), 10) >= 7000 ? '+ £10 delivery' 
                                                 : '+ £6 delivery';
$("#textBox").html(output);                                   

【讨论】:

可能更合适的一件事是将您的“金额”视为数字而不是字符串。我会考虑使用大于比较:if (value &gt;= 7000) @hafichuk。谢谢,将其添加到我的答案中。添加了学分。我希望我们可以拆分代表... :-)【参考方案2】:

改变 if 条件

var val = $(this).val();
if (val == '12500' || val ==  '8500' || val ==  '7000')

不然

var arr = ['12500','8500','7000'];
$('#yourSelect').change(function () 
    if (arr.indexOf($(this).val()) !== -1) 
        $("#textBox").html("+ £10 delivery");
     else 
        $("#textBox").html("+ £6 delivery");
    
);

【讨论】:

最好缓存 jQuery 对象然后构造它 3 次。【参考方案3】:

if 中的代码不是有效的布尔表达式。改成这样:

if ($(this).val() == '12500' ||  $(this).val() == '8500' || $(this).val() ==  '7000') 

【讨论】:

【参考方案4】:

或者,如果超过一定金额时运费总是更高,您可以使用$(this).val() &gt;= 7000。然后,当金额选择发生变化时,您不必更改代码,除非您还更改了较高的交付成本阈值。

【讨论】:

【参考方案5】:

试试这个

$(document).ready(function() 
    $('#yourSelect').change(function() 
        if ($(this).val() == '12500' || $(this).val() == '8500' || $(this).val() == '7000') 
            $("#textBox").html("+ £10 delivery");
        
        else 
            $("#textBox").html("+ £6 delivery");
        
    );
)​

jsFiddle Link

【讨论】:

【参考方案6】:
$('#yourSelect').change(function() 
    var deliveryPrice = parseInt(this.value, 10) >= 7000 ? 10 : 6;
    $('#textBox').text('+ £' + deliveryPrice + ' delivery');
);

【讨论】:

以上是关于jQuery 选择选项,更改 html 内容。我究竟做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章

如果选择框选项更改,则 JQuery 验证不起作用

如何使用 jQuery 检查所选选项的更改? [复制]

jQuery选择更改事件获取选择的选项

jQuery - 禁用选项时更改选择值

如何更改选择 Jquery 中的默认选项

使用选中的复选框和 jQuery 更改选择选项