Target.attr('class') 在 Mozilla 中是未定义的
Target.attr('class') is undefined in mozilla
我对最新的 Mozilla Browser 13.0 和 Ubuntu 有一个奇怪的问题。该代码在其他浏览器和以前版本的 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')....未定义
这是截图: http://i47.tinypic.com/dqoits.png
嗯...为我工作?
http://jsfiddle.net/acrashik/b9MCj/
如果没有类
附加到单击的元素target.attr('class')
返回undefined
(从 v1.6 开始); 在 FF 中,这表示为您尝试调用 .match
时看到的错误。(在 chrome 中,它将是"无法调用未定义的方法匹配")
为缺席的类添加检查; if (typeof target.attr('class') === "undefined") return;
您将该函数绑定到整个文档上的"单击"事件。因此,任何单击都将触发处理程序,包括未设置类属性的元素上的处理程序。虽然如果您仅在具有定义的"class"属性的元素上对其进行测试(在任何浏览器中),这将正常工作,但它会抛出错误(在任何浏览器中),因为您尝试在undefined
值上调用方法.match()
。
"从jQuery 1.6开始,.attr()方法为尚未设置的属性返回未定义。接口参考
既然你正在使用jQuery,谁不使用它的全部功能?它有一个内置的.hasClass()
方法:
$(document).click(function(event) {
var target = $(event.target);
if (!target.hasClass('RefineClick') && target.parents('.RefineClick').length == 0) {
$('.RefineClick').fadeOut();
}
});
请注意,该方法的输入是类名,而不是类选择器。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 如何消除代码中的未定义和其他问题
- 未捕获的ReferenceError:$未定义
- Mozilla 中的 Java 脚本未定义错误
- Target.attr('class') 在 Mozilla 中是未定义的
- Mozilla Firefox表示未定义Referenceerror事件,没有任何解决方案有效
- ReferenceError: google 未定义 - Mozilla Firefox 中的 Google Apps
- Mozilla Firefox中存在未定义的错误
- 仅在Mozilla Firefox上未定义角度控制器
- Chrome和Mozilla中存在Javascript错误,但Opera中没有.未定义名称
- 在mozilla中,event是未定义的,IE中一切正常
- Mozilla SDK的新手;url未定义”;错误
- 未捕获类型错误:不能读取属性'childNodes'未定义不工作在Chrome和Mozilla