2014-04-19 123 views
2

我有一个基于数量和重量计算成本和运费的购物车。因此,有两种可能的送货方式,我有一个功能可以在页面加载时自动选择正确的送货方式。但是,如果某人更改数量,则选择运输的功能必须重新运行。.on变更功能第一次不是第二次?

要做到这一点我想这个代码:

$('.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事件触发第一次,但不会触发第二次。为什么?

+1

你可以在这里发表小提琴吗? – chris97ong

+0

@ chris97ong - 一个小提琴不会复制我的CMS如何加载并呈现不幸的购物车。 – L84

+0

您使用的是哪个版本的jQuery? 1.7或1.9。 – OQJF

回答

3

请,而不是在现场使用,或者如果jQuery的版本是1.9以上,请你这样的代码:$(document).on('change','.cartInputText',function(){});

为了您的示例代码,你只绑定功能.cartInputText,如果页面重新呈现或者其他原因导致.cartInputText重新生成,它会失去功能。

对于我的代码,我将函数绑定到文档,并且我认为您知道html元素的事件可以冒泡,您单击.cartInputText并且它会冒泡到文档并让该函数被触发。更多,请查看jQuery中的Live和Bind区别。

+0

感谢您的帮助!随着你的解释它是有道理的。发生什么事是我的CMS运行的代码改变了购物车的总数等等,这就是它失去功能的原因。 – L84

+0

这是我很高兴给你这个帮助。 NP。 – OQJF

0

上面的代码适用于正在执行以前的声明之前添加HTML代码,

如果一些其他内容与同类(cartInputText)动态添加 您需要指定一个通过添加内容后再次调用功能来添加功能。

相关问题