我有一个购物车,可根据数量和重量计算成本和运费。因此,有两种可能的运输选项,我有一个功能来自动选择页面加载正确的运输。但是,如果某人更改了数量,则必须再次运行选择运输的功能。
要做到这一点,我尝试了这段代码:
$('.cartInputText').on('change', function() {
$('#ShippingOptions option').each(function(){
if (this.value == '163182') {
$('#ShippingOptions option[value="163182"]').prop('selected', true)
return false;
}
if (this.value == '163183') {
$('#ShippingOptions option[value="163183"]').prop('selected', true)
return false;
}
});
});
这是我第一次更改数量时的工作原理。如果我第二次更改数量它不起作用。无论我多少次更改它的工作量,我该如何解决这个问题?
更新
onchange事件第一次触发,但第二次触发。为什么呢?
答案 0 :(得分:3)
请使用live而不是on,或者如果jquery的版本高于1.9,请使用以下代码:$(document).on('change','.cartInputText',function(){});
对于您的示例代码,您只将函数绑定到.cartInputText,如果页面重新呈现或原因导致.cartInputText
重新生成,则会丢失该函数。
对于我的代码,我将函数绑定到文档,我想你知道html元素的事件可以冒泡,你点击.cartInputText
然后它冒泡到文档并让函数被触发。更多,请查看jQuery中的实时和绑定差异。
答案 1 :(得分:1)
用户KeyUp
功能代替change
来检测输入文字。
像:
$('.cartInputText').keyup(function () {
alert('test');
});
答案 2 :(得分:0)
上面的代码适用于在执行前面的语句之前添加的html代码,
如果动态添加具有相同类(cartInputText)的其他内容 您需要在添加内容后再次调用以上功能。