1

我在我的 JavaScript 错误日志中看到了许多这样的错误:

预期对象

TypeError:对象 [object Object] 的属性“$”不是函数

不幸的是,当我自己尝试时,我无法在任何这些浏览器上复制错误。我突出显示的行是导致错误的行。

我阅读了一些关于“无冲突”模式的内容,这可能是一个问题,但我无法通过查看下面的代码来了解问题所在。

我正在使用 jQuery 1.7.2,它是从我的服务器而不是 CDN 提供的:

<script type="text/javascript" src="/scripts/jquery/jquery-1.7.2.min.js"></script>

我的代码:

$(function() {

    $('.imgCell').live("mouseenter", function() {
        if($(this).find('a img').length > 1) { // this line throws the error
            $(this).find('a img:eq(0)').hide();
        }   
    });

});

它似乎也不会影响一个特定的浏览器,因为以下受到影响:Chrome 26、Chromium 25、Firefox 10、Firefox 14、Firefox 16、Firefox 20、IE 10、IE 8、IE 9、Mobile Safari 6

4

2 回答 2

1

从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。

$(document).on("mouseenter",'.imgCell', function() {
        //do something
    });

如果您使用的是 CDN,那么您需要为其编写回退

<script type="text/javascript" src="//ajax.microsoft.com/ajax/jquery/jquery-1.9.2.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') { // load your JS file if CDN failed 
    document.write(unescape("%3Cscript src='/js/jquery-1.9.2.min.js' type='text/javascript'%3E%3C/script%3E"));   
}
</script>
于 2013-05-02T10:57:58.683 回答
0

例如,使用 'jQuery' 而不是 $ 符号

jQuery(this).find('a img').length > 1
于 2013-05-02T11:01:39.527 回答