как использовать переменную, переданную в качестве аргумента функции - PullRequest
1 голос
/ 10 декабря 2011

ОБНОВЛЕНИЕ

У меня была небольшая опечатка, все работает так, как должно.

Я не могу понять, как использовать переменную, переданную в качестве аргумента функции при множественном вызове ajaxв качестве селектора.

Первое и второе в порядке, но при вызове ThirdCallbackFunction нажатие кнопки "# button-" + id_number "ничего не вызывает, хотя выводится предупреждение (" # button- "+ id_number)правильный элемент # button-0 # button-1 ... etc

$(document).ready(function() {
        // FIRST
    $("#process").click(function(){
        var somedata = $("#somedata").val();
          $('input[type="text"]').removeClass("error");
          $.ajax({
              url: 'first.php',
              type: "POST",
              data: ({somedata: somedata }),
              beforeSend:function(){
                jQuery('#ajax-panel').html('<div class="loading"><img src="loading.gif" alt="Loading..." /></div>');
              },
              success: function(data){
                  $("#ajax-panel").html(data);
                      SecondCallbackFunction();
              },
              error:function(){
                jQuery('#ajax-panel').html('<p class="error">Oops!</p>');
              }
          }); 
        });
});
        // SECOND
        function SecondCallbackFunction(){
            $(".load-button").click(function(){
                    var id = $(this).closest('.box').attr('id');
                    var arr = id.split('-');
                    var id_number = arr[1];
                    alert(id_number);  //
                    $.ajax({
                        url: 'second.php',
                        type: "POST",
                        data: ({id_number: id_number }),
                        beforeSend:function(){
                          $("#"+id).find('.load-button').hide();    
                          $("#"+id).append('<div class="loading"><img src="loading.gif" alt="Loading..." /></div>');
                        },
                        success: function(data){
                            $("#"+id).find('.loading').hide();  
                            $("#"+id).append(data);
                            ThirdCallbackFunction(id_number);
                        },
                        error:function(){
                          $("#"+id).append('<p class="error">Oops!</p>');
                        }
                    });

            });
        }
        // THIRD
        function ThirdCallbackFunction(id_number){
            alert(id_number);  // SHOWING 1 , 2 ....etc
            $("#button-" + id_number).bind("click", function() {   // DOING nothing
                    var title = $('#title' + id_number).val();              
                    $.ajax({
                        url: 'third.php',
                        type: "POST",
                        data: ({title: title, 
                        }),
                        beforeSend:function(){
                           $("#item"+id_number).append('<div class="loading"><img src="loading.gif" alt="Loading..." /></div>');
                        },
                        success: function(data){
                             $("#item"+id_number).find('.loading').hide();  
                             $("#item"+id_number).append(data);
                        },
                        error:function(){
                          $("#"+id).append('<p class="error">Oops!</p>');
                        }
                    });
                });
        }

1 Ответ

0 голосов
/ 10 декабря 2011

Я не совсем понимаю ваш вопрос, но если вы когда-нибудь захотите использовать какие-либо переменные, объекты или что-либо, что может быть определено в качестве аргумента, просто оберните его как массив [Variable] (если еще нет)функция эта переменная будет передана в качестве аргумента, и использовать функцию apply.func.apply(this, [Variable]); Если вам известны переменные, которые вы хотите передать, вы можете просто передать их как обычно:

(function() { })(variable1, variable2, /* ect... */);

Или использовать функцию вызова:

func.call(this, variable1, variable2);

Где funcэто функция, которую вы вызываете.Вы также можете заменить ключевое слово this на что угодно.Если вы это сделаете, любые ссылки на this внутри функции будут ссылаться на указанное вами значение.Вот как фреймворки, такие как jQuery, позволяют вам обращаться к объекту jQuery, ссылаясь на this внутри их фреймворка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...