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

标签 javascript jquery jquery-selectors

更新

我有一个小错字,一切都正常。

我不知道如何在多个 ajax 调用中使用作为函数参数传递的变量作为选择器。

第一和第二都可以,但是当调用 ThirdCallbackFunction 时,单击 '"#button-"+ id_number' 不会触发任何内容,尽管alert("#button-"+ id_number) 显示了正确的元素 #button-0 #button-1 ...等

$(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>');
                        }
                    });
                });
        }

最佳答案

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

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

或者使用call函数:

func.call(this, variable1, variable2);

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

关于javascript - 如何使用作为函数参数传递的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453764/

相关文章:

javascript - 使用延迟的resolve()和when()时传递参数

javascript - 将值从 QueryString 传递到 asp.net mvc 中 Controller 的 Index 操作

javascript - 单选按钮表单上的参数列表后缺少 jquery )

javascript - 绕过 Node 的异步特性

javascript - 如何从 Flash 触发 JavaScript 函数?

JavaScript从 “ng-bind”获取span值

javascript - 如何将父组件中声明的 ng-template 中的变量传递给子组件/指令?

javascript - 如何使用 jQuery.end()?

当在就地编辑元素上替换元素 html 时,JQuery 选择器和 val() 或 text() 似乎失败

jquery - 使用 jQuery 比较 2 个 SELECT 框的值