【发布时间】:2013-04-16 12:33:45
【问题描述】:
这个错误让我发疯了!无论如何,我创建了一个简单的 jQuery 插件,我称之为“border”,但我得到了这个错误:
Uncaught TypeError: Object [object Object] has no method 'border'
郑重声明,jQuery 仅包含一次,并且包含在我的插件之前。
我用它来避免冲突:
<pre>
var $jq = $.noConflict();
//$.noConflict();
$jq("li").borderX('1px solid blue');
</pre>
编辑:
这是我的插件代码:
jQuery(document).ready(function ($) {
$.fn.borderX = function (params) {
params = $.extend({width: 'null', color: 'null', radius: 'null'}, params);
this.each(function () {
var $t = $(this);
var response = jQuery.parseJSON(params);
if (typeof response == 'object') { //It is JSON
if (params.width) {
$t.css('border-width:', params.width);
}
if (params.color) {
$t.css('border-color:', params.color);
}
if (params.radius) {
$t.css('border-radius:', params.radius);
}
} else {
$t.css('border', params);
}
});
return this;
};
});
我调用名为“borderX”的插件的 HTML 代码是:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery.borderX.js"></script>
<script type="text/javascript">
var $jq = $.noConflict();
//$.noConflict();
$jq("li").borderX('1px solid blue');
</script>
编辑°2:
$.fn.border = function (options) {
var params = $.extend({width: 'null', color: 'null', radius: 'null'}, options);
this.each(function () {
var $t = $(this);
var response = jQuery.parseJSON(params);
if (typeof response == 'object') { //It is JSON
if (params.color) {
$t.css('border-color:', params.color);
}
if (params.radius) {
$t.css('border-radius:', params.radius);
}
} else {
$t.css('border', params);
}
});
return this;
};
【问题讨论】:
-
你如何设置你的插件?
-
请发布您的插件,称为“边框”,您正在调用
borderX方法。 -
我实际上已将名称更改为“borderX”,我得到了同样的错误。我一直在叫“borderX”。
-
错误不在上面的代码中 - 它在您的插件中。我们可以看看代码吗?
-
您没有从您的插件中提供一盎司的代码。有两件事浮现在脑海 - 你没有加载插件或者你没有将插件暴露给 jQuery,因此如果 jQuery 没有“看到”它,该方法将不存在。
标签: javascript jquery plugins