我无论如何都不是一个javascript开发人员,但是我遇到了JS问题。
如果有人可以帮我弄清楚问题会是什么样的惊人。
正在崩溃的脚本是:
$('button').each(function()
{
var curr_title = $(this).attr('title');
if(curr_title.length > 0) $(this).button({ icons: { primary: curr_title } });
else $(this).button();
});
错误是
TypeError:无法读取未定义的属性“length”。
在以前的代码版本中,这根本没有问题。但唯一的变化是更新Jquery。
有谁知道这可能是问题吗?
再次。抱歉,如果我是愚蠢的。
答案 0 :(得分:2)
此行返回的值为undefined
(可能是因为它引用的按钮没有指定此类属性。)
var curr_title = $(this).attr('title');
jQuery改变了版本1.6中attr()
的行为
从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined。
因此if
语句中的调用失败。要“修复”此功能,您只需添加undefined
这样的支票:
if( (typeof curr_title != 'undefined') && (curr_title.length > 0)) {
$(this).button({ icons: { primary: curr_title } });
} else {
$(this).button();
}
答案 1 :(得分:0)
看起来你可能在标记中有一个没有“title”属性的按钮。对于此按钮(或按钮)curr_title
未定义,因此在其上调用.length会引发异常
答案 2 :(得分:0)
$(this).attr('title');
未定义,因此没有长度。您的按钮是否包含标题,如果您对该属性的测试存在,请尝试:
$('button').each(function()
{
var curr_title = $(this).attr('title');
if(curr_title != undefined)
$(this).button({ icons: { primary: curr_title } });
else
$(this).button();
});