jQuery Basic插件 - 从另一个页面加载

时间:2011-11-24 11:56:29

标签: jquery

我对jQuery插件非常缺乏经验,而且在jQuery本身只有轻微的经验。

我正在尝试创建一个jQuery插件,允许我使用URL中的GET变量从另一个页面填充div内容,具体取决于传递给它的参数。

例如,$('#mydiv').getstuff(1,2,3)会使用engine.php?a=1&b=2&c=3的代码加载它。

到目前为止,这是我的代码 - 我知道参数的使用方式存在问题,但除此之外我无法弄清楚为什么它不起作用。

<script type="text/javasctipt" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
    (function($){
        $.fn.extend({ 
            //pass the options variable to the function
            bookmark: function(options) {
                var defaults = {
                    number: 5,
                    order: 1,
                    user: '',
                };

                var options = $.extend(defaults, options);

                return this.each(function() {
                    var o = options;
                    var obj = $(this);
                    var container = $("div", obj);

                    $("div", obj).load("thing.php?number="+o.number+"&order="+o.order+"&user="+o.user);
                });
            }
        });
    })(jQuery);

    $(document).ready(function() {
        $('#thing').bookmark(1,2,3);
    });
</script>

<div id="thing"></div>

3 个答案:

答案 0 :(得分:1)

我看到的问题是:

var obj = $(this);
$("div", obj).load("thing.php?number="+o.number+"&order="+o.order+"&user="+o.user);

最后一行说“在obj中获取所有div标签”,也就是说,当前jQuery上下文中的所有div标签,即div#thing。只需将其更改为:

$(this).load("thing.php?number="+o.number+"&order="+o.order+"&user="+o.user);

答案 1 :(得分:0)

看起来几乎是正确的。

查看syntax here

$("div", obj)?什么是obj?此外,这可能只是一个示例,但您需要#div。此外,请记住#div必须存在,否则甚至不会执行调用。

另外,看看javascript错误控制台,也许这会给你任何提示它为什么不起作用?可能有任何错误吗?

答案 2 :(得分:0)

这一行 -

$("div", obj).load("thing.php?number="+o.number+"&order="+o.order+"&user="+o.user);

相当于 -

$(obj).find("div").load("thing.php?number="+o.number+"&order="+o.order+"&user="+o.user);

所以你在obj里面搜索一个div,在你的例子里面是div,里面没有任何东西。因此代码将不返回任何元素,并且您的load函数将不起作用。你可以load直接进入$(obj)或写一些代码来检查你的插件被调用了哪些元素,然后再决定注入load内容的位置。