2014-04-19 94 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)動態添加 您需要指定一個通過添加內容後再次調用功能來添加功能。

相關問題