как предотвратить загрузку div в html в начале и дождаться завершения ajax - PullRequest
0 голосов
/ 10 июля 2019

У меня есть пара div в HTML, и я хочу, чтобы id = plot_selector ждал, пока пользователь щелкнет правой кнопкой мыши, потому что, когда пользователь щелкает правой кнопкой мыши, я использую jquery для получения информации о строке, по которой пользователь щелкает правой кнопкой мыши и отправить его в контроллер, затем я вызову id = plot_selector для выполнения, потому что значение plot_list в этом идентификаторе изменится после щелчка правой кнопкой мыши пользователем. Есть ли способ, которым я могу сделать это или попросить div выполнить снова, чтобы он имел обновленную переменную plot_list после щелчка правой кнопкой мыши? Другими словами, я хочу, чтобы div всегда работал каждый раз, когда пользователь щелкает правой кнопкой мыши по разным строкам, а не запускается один раз в начале. это мой jquery:

<script>
//Function to handle context menu appearing/disappearing
$(function() {

    var contextMenu      = $("#contextMenu");
    var $rowClicked
    //body on contextmenu is the event for right clicking
    $(document.body).on("contextmenu", "table tr", function(e) {

        var tableData = $(this).children("td").map(function(){
            return $(this).text();
        }).get();

        ajax('{{=URL('ftds','view','view_custom_search')}}' + '?clickedFlight=' + tableData[0], []);            //send this to controller and the div should execute after this .


        contextMenu.css({
              display: "block",
              left: e.clientX,

              //TODO: figure out why I have to hardcode this value to get the menu to appear in correct place
              //...Y axis page value not correctly displaying on table
              top:  e.clientY - 80        
         }); 
         return false;

    });

    $('html').click(function(e) {
    contextMenu.hide();
   });

});



 $(document).ready(function() {  
    var plot_context_menu = $("#plot_context_menu");
    var table_container   = $("#table_container");
    var plot_container    = $("#plot_container");
    //plot_container.hide();

    $(plot_context_menu).click(function(e) {

        $('#contextMenu').hide();
        table_container.attr('class', 'col-md-6');  

        plot_container.show();

        return false;
    });

    $('#plot_choice').change(function () {


            $('#plot_choice option:selected').each(function(){         <!-- if new file in the drop down menu selected, hide class named plot_path, and display the selected id (each file in the menu is assoicated with ID) -->

                var graph = $( this ).val()
                $('.plot_path').hide();
                $('#' + graph).show(); 
                return false;       
            })
    })

});


</script>

это div в представлении, которое я хочу выполнить после оператора ajax, чтобы переменная Plot_list получила новое значение после оператора ajax в jquery

<div class = 'col-md-4' id = 'plot_selector'>

            <select name = 'plot_choice' class = 'form-control' id = 'plot_choice'>
            {{for r in plot_list:}}
            <option value = {{=plot_list.index(r)}}> {{=r}}                
            </option>
            {{pass}}

            </select>
            <br>    
            </div> 
...