2016-06-22 16 views
0

私が作成したかなり基本的なステップバイステップウィザードがあります。 1ページのドロップダウンメニューからオプションを選択すると、jQuery ajaxを使用して新しいページを読み込みます。ヒットした場合は元のページが再び読み込まれます。私のjavascript関数は一度しか起動しません

ただし、元のページを再度読み込んだ後、modelSelect()ページ2を読み込む関数の動作が停止します。まったく発砲しない。私は何が間違っているのか正確にはわかりません。

誰かが私が間違っていることを見ることができると願っています。私のコードは以下の通りです:

//Collapse panel handling 
var group = jQuery('.estimator-container'); 
jQuery('.tab-click').click(function() { 
    group.find('.collapse.in').collapse('hide'); 
    jQuery(this).parent().toggleClass('active'); 
}); 

/* -------------------------------------- *\ 
     New form handler 
    \* -------------------------------------- */ 

    function modelSelect(v) { 
     jQuery('#page_2, .estimator-container').toggle(); 
     // Ajax for loading page_2 
     jQuery.ajax({ 
      type: "POST", 
      data: v, 
      success: function() { 
       jQuery('.estimator-app').load(templateUrl + "/page-estimator2.php?p=" + v); 
      } 
     }); 
    } 


    jQuery('.estimator-panel').on('change', '.select-model', function() { 
     var v = jQuery(this).val(); 
     modelSelect(v); 
    }); //end on change function 

    // Back and continue handling 
    jQuery('.estimator-app').on('click', '.estimator_form_btn_next', function() { 
     var backBtn = jQuery('.estimator_form_btn_back'); 
     var continueBtn = jQuery('.estimator_form_btn_next'); 
     var firstPage = jQuery('#contact-first-page'); 
     var lastPage = jQuery('#contact-last-page'); 

     if (firstPage.is(":visible")) { 
      firstPage.toggle(); 
      lastPage.toggle(); 
     } 
    }); //end continue 

    // Go back 
    jQuery('.estimator-app').on('click', '.estimator_form_btn_back', function() { 
     var backBtn = jQuery('.estimator_form_btn_back'); 
     var continueBtn = jQuery('.estimator_form_btn_next'); 
     var firstPage = jQuery('#contact-first-page'); 
     var lastPage = jQuery('#contact-last-page'); 

     if (lastPage.is(":visible")) { 
      firstPage.toggle(); 
      lastPage.toggle(); 
     } else { 
      jQuery.ajax({ 
       type: "POST", 
       // data: v, 
       success: function() { 
        jQuery('.estimator-app').load(templateUrl + "/estimator-initial.php"); 
       } 
      }); 
     } 

    }); //end continue 

答えて

0

シンプルな委任。

jQuery(document).on('change', '.select-model', function(){を29行目に追加すると機能しました。

0
あなたの次の行に変更し

:HTMLは、ページのロード後、またはJSのいくつかの種類によってロードされている場合、あなたがイベントをdeattachしてから戻って添付する必要があるため、この

jQuery(document).off('change', '.select-model').on('change', '.select-model', function(e){ 
    e.preventDefault(); 

jQuery('.estimator-panel').on('change', '.select-model', function() { 

関連する問題