未捕获的TypeError:无法调用null的方法'dropit'

时间:2014-01-10 18:12:47

标签: php jquery html css magento

我在登录后尝试在标题中为“我的帐户”添加一个jquery下拉列表(尝试用户名测试和密码测试@ 123),但我一直收到此错误:

未捕获的TypeError:无法调用null

的方法'dropit'

我甚至感动:

    <script type="text/javascript">
    jQuery.noConflict();
    jQuery(document).ready(function () { 
$('#myaccountmenu').dropit();
});
</script>
在页脚之前到底部,无济于事。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

首先,您正在调用jQuery.noConflict(),它会释放对全局$变量的引用。您必须使用jQuery或其他变量来访问jQuery对象。

<script type="text/javascript">
    jQuery.noConflict();
    jQuery(document).ready(function () { 
        jQuery('#myaccountmenu').dropit();
    });
</script>

其次,我查看了您正在处理的页面,并进行了搜索,但没有ID "myaccountmenu"的元素。要么您有错误的ID,要么必须在其他地方动态生成元素。如果是这种情况,您需要确保在创建元素后运行代码。

答案 1 :(得分:0)

现在我有时间看你的页面了。 正如我在评论中已经提到的,您在页面上加载了另一个使用$的库( prototype )。 由于 prototype 是在您调用noConflict的jQuery版本之前加载的,因此$将恢复为 prototype

因此您需要将其更改为jQuery('#myaccountmenu').dropit();

但是只有更改此代码才能使代码运行,然后您将收到错误dropit is not defined,因为您加载了两个jQuery版本。 一个在注册插件的 prototype (1.8.0版本)之前,然后是1.9.1(实际加载两次)。这将覆盖插件注册的1.8.0版本。

使用不同的库可能会导致内存泄漏。加载jQuery(即使它是相同版本)多个也可能导致内存泄漏以及意外行为(无法正确传播的事件,......)