“attr(id)特殊检查失败”jQuery

时间:2011-12-02 18:58:44

标签: jquery

我从控制台收到此消息:

  

attr(id)特殊检查失败通过
访问该属性的内容   attr(id),改为使用undefined。

我的代码很简单:

$(document).ready(function(){
    var sezione = "";
    $('.menu_bar').click(function() {
        sezione = $(this).attr('id');
    });
});

可能是什么问题?

修改

这是我页面中的html:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="/css/glamStyle2.css" />
<script src="http://www.modernizr.com/downloads/modernizr-latest.js"></script>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script language="javascript" type="text/javascript" src="/js/jquery.easing.1.3.js"></script>
<!--[if IE]><script src="excanvas.js"></script><![endif]-->
<script src="/js/jquery.jsPlumb-1.3.1-all-min.js"></script>
<script language="javascript" type="text/javascript" src="/js/floating2.js"></script>
<title>Glam Group srl</title>
</head>

<body>
  <div id="container">
    <div id="top_bar" class="menu_bar"></div>
    <div id="left_bar" class="menu_bar"></div>
    <div id="right_bar" class="menu_bar"></div>
    <div id="bottom_bar" class="menu_bar"></div>
  </div>
</body>
</html>

我仍然不明白这个问题......

编辑2

这只发生在Firefox中的firebug控制台中。我没有Chrome控制台的这个问题。

1 个答案:

答案 0 :(得分:1)

jQuery Lint抛出错误。它希望您使用this.id而不是$(this).attr('id'),因为this已经代表具有id属性的HTMLDivElement

来自jQuery Lint源:

langs = {
            en: {
                incorrectCall: '%0(%1) called incorrectly',
                specialCheckFailed: '%0(%1) special check failed',
                ...
                notBestMethod: 'Insted of accessing the property via %0(%1), use %2 insted', 
                ...

// check for non-ideal property/attribute access ( e.g. attr('id') - element.id is faster)
    each({'attr': {'id': 'elem.id', 'value': 'jQuery.val()'}}, function(method, attributes) {
        addCheck(method, 3, function() {
            if (typeof arguments !== 'undefined' && typeof attributes === 'object') {
                var match = false;
                for (m in arguments) {
                    if (attributes.hasOwnProperty(arguments[m])) {
                        match = arguments[m];
                    }
                }

                if (match !== false) {
                    var args = [].splice.call(arguments,0);
                    return lint.langs[lint.lang].notBestMethod.replace(/%0/, method)
                                                              .replace(/%1/, args.join(', '))
                                                              .replace(/%2/, attributes.match);
                }
            }
        });
    });