在Firebug控制台中工作,但不能在文件中工作。
谷歌浏览器 - 未捕获的TypeError:对象#没有方法'listAttributes'
Firefox - $(“。div4”)。listAttributes不是函数
<script src='/jquery.js'></script>
<script src='jquery.listAttributes.js'></script>
<div class='div4' style='color:red;'>
</div>
<script>
$(".div4").listAttributes();
</script>
jquery.listAttributes.js:
if(jQuery) {
jQuery(document).ready(function() {
jQuery.fn.listAttributes = function(prefix) {
var list = [];
$(this).each(function() {
console.info(this);
var attributes = [];
for(var key in this.attributes) {
if(!isNaN(key)) {
if(!prefix || this.attributes[key].name.substr(0,prefix.length) == prefix) {
attributes.push(this.attributes[key].name);
}
}
}
list.push(attributes);
});
return (list.length > 1 ? list : list[0]);
}
});
}
我的错误在哪里?
答案 0 :(得分:4)
此代码:
$(".div4").listAttributes();
在 document.ready
之前运行,但您的插件未定义直到 document.ready
,只需删除jQuery(document).ready(function() { });
包装器你的插件:)
另一个注意事项,对插件的调用应该在document.ready
处理程序中,如下所示:
$(function() {
$(".div4").listAttributes();
});
这可确保.div4
元素位于DOM中并准备就绪。
答案 1 :(得分:1)
您正在脚本中调用$(".div4").listAttributes();
内联(因此,当浏览器分析<script>
元素时调用它),但您要在jQuery.fn.listAttributes
事件中分配ready
,在浏览器完成解析整个文档之后才会存在。