在Object Literal中调用jQuery.load

时间:2010-11-08 21:25:17

标签: javascript module design-patterns

我正在尝试学习一些更高级的java脚本模式,同时使用jQuery来缓解jQuery的一些ajax难度。但是,我一直在努力解决没有错误的问题。

我希望能够调用ajaxCalls.setup({})并让它用传递给setup的对象替换默认值。我有那个部分在工作。我似乎遇到的问题是ajax调用。当callIt函数运行时,$(this.defaults.element).load(....)不运行或者如果它运行失败。我很难过。我真的只是想学习新的东西。我将不胜感激任何帮助

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
        <script>
            var ajaxCalls = (function($){

                var ajaxer = {                  

                    defaults:{
                        url:"test.php",
                        element:"#ajaxerizer"
                    },  

                    setup:function(setup){              
                        var defaulLengther = this.defaults
                        /*var l = 0;*//*bug*/
                        for (var key in defaulLengther)
                        {
                            if(setup.hasOwnProperty(key))
                            {   
                                this.defaults[key] = setup[key];
                                /*l++;*//*bug*/
                            }
                        }
                        /*debugger*/
                        /*for(var i=0; i < l; i++)
                        {
                            alert(this.defaults.power);
                        }   */      
                        this.callIt();
                    },

                    callIt:function(){
                        $(this.defaults.element).load(this.defaults.url, function(){alert("success");});
                    },


                }
                return ajaxer

            })(jQuery); 

            ajaxCalls.setup({})
        </script>

    </head>
    <body>

        <div id="ajaxerizer"></div>

    </body>
</html>

感谢您的帮助test.php就在其中

<p>IT WORKED</p>

注意:在这个项目中我打算只使用jQuery进行DOM选择和aJax调用

1 个答案:

答案 0 :(得分:0)

您需要将ajaxCalls.setup设置为在使用document.ready加载页面后运行 例如

    $(document).ready(function(){
        ajaxCalls.setup({})
    });

否则,您在加载html之前尝试替换div。