我对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>
答案 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
内容的位置。