如何使用作为函数参数传递的变量

时间:2011-12-10 01:50:57

标签: javascript jquery jquery-selectors

更新

我有一个小错字,一切都像它应该的那样。

我无法弄清楚如何将多个ajax调用中作为函数参数传递的变量用作选择器。

第一个和第二个都可以,但是当调用ThirdCallbackFunction时,单击'“#button-”+ id_number'不会触发任何内容,尽管alert(“#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 :(得分:0)

我不太明白你的问题,但如果你想使用任何变量,对象或任何可以定义为参数的东西,只需将其包装为数组[Variable](如果还没有, )获取该变量将作为参数传递给的函数,并使用apply函数。 func.apply(this, [Variable]);如果您碰巧知道要传递的变量,可以直接传递它们:

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

或使用通话功能:

func.call(this, variable1, variable2);

func是您正在调用的函数。您也可以将关键字this替换为任何内容。如果这样做,函数内对this的任何引用都将引用您提供的值。这就是jQuery等框架允许您通过引用其框架内的this来访问jQuery对象的方式。