1

无论如何,我都不是一个 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:无法读取未定义的属性“长度”。

这在以前的代码版本中完全没有问题。但是唯一的变化是更新了 Jquery。

有谁知道这是否可能是问题?

再次。抱歉,如果我很愚蠢。

4

3 回答 3

2

此行返回的值是undefined(可能是因为它引用的按钮没有指定这样的属性。)

var curr_title = $(this).attr('title');

attr()jQuery在 1.6 版本中改变了行为

从 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();
}
于 2012-09-28T09:24:16.923 回答
0

看起来您可能在标记中有一个没有“标题”属性的按钮。对于此按钮(或按钮)curr_title未定义,因此调用 .length 会引发异常

于 2012-09-28T09:23:05.043 回答
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();
            });
于 2012-09-28T09:24:05.227 回答