我对使用Ubuntu的最新Mozilla Browser 13.0有一个奇怪的问题。该代码在其他浏览器和早期版本的mozilla中都能很好地运行。
这是代码
$(document).click(function(event) {
var target = $(event.target);
if (!target.attr('class').match(/^RefineClick/) && target.parents('.RefineClick').length == 0) {
jQuery('.RefineClick').fadeOut();
}
});
我得到以下错误: Target.attr('class')....未定义
答案 0 :(得分:0)
嗯......为我工作?
答案 1 :(得分:0)
如果点击的元素target.attr('class')
没有附加类,则返回undefined
(自v1.6起);在FF中,表示为您尝试呼叫.match
时看到的错误。 (在chrome中它将是“无法调用未定义的方法匹配”)
添加缺席课程的支票; if (typeof target.attr('class') === "undefined") return;
答案 2 :(得分:0)
您将该功能绑定到整个文档上的“click”事件。因此,任何点击都会触发处理程序,包括那些没有设置类属性的元素。虽然只有在具有已定义的'class'属性的元素上测试它(在任何浏览器中),它才会正常工作,但它会抛出错误(在任何浏览器中),因为您尝试调用方法{{ 1}} .match()
值。
“从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined。” API ref.
既然你正在使用jQuery,谁不使用它的全部功能?它有一个内置的.hasClass()
方法:
undefined
请注意,该方法的输入是类名而不是类选择器。