在Mozilla中未定义Target.attr('class')

时间:2012-06-12 14:44:13

标签: javascript jquery html firefox cross-browser

我对使用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')....未定义

以下是截图:http://i47.tinypic.com/dqoits.png

3 个答案:

答案 0 :(得分:0)

嗯......为我工作?

http://jsfiddle.net/acrashik/b9MCj/

答案 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

请注意,该方法的输入是类名而不是类选择器。