JQuery - $未定义为Yeoman

时间:2015-11-02 10:26:53

标签: javascript jquery angularjs yeoman yeoman-generator

我正在与Yeoman开始一个新的Web应用程序,我想知道为什么我无法访问$元素。 例如,我有这个:

<ul id="collapse">
<li>asdas</li>
<ul id="collapse2">
    <li>sgdfg</li>
    <li>fdg</li>
    <li>dfg</li>
</ul>   
<li>asdasd</li>
<ul>
    <li>sgdfg</li>
    <li>fdg</li>
    <li>dfg</li>
</ul>

我想通过id访问第一个ul:

var $collap = angular.element($('#collapse'));
var $collap = $('#collapse');

我想,我已经很好地加载了jquery lib,因为yeoman为我做了,我尝试了这个:

if (window.jQuery) {  
    window.alert('si');
} else {
window.alert('no');

要知道jquery是否已加载且是否为加载。我不知道还有什么我可以尝试,我已经阅读了很多关于这种错误,但没有人与我的相符。 这是我的索引:

[...]
<!-- Google Analytics: change UA-XXXXX-X to be your site's ID -->
 <script>
   !function(A,n,g,u,l,a,r){A.GoogleAnalyticsObject=l,A[l]=A[l]||function(){
   (A[l].q=A[l].q||[]).push(arguments)},A[l].l=+new Date,a=n.createElement(g),
   r=n.getElementsByTagName(g)[0],a.src=u,r.parentNode.insertBefore(a,r)
   }(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

   ga('create', 'UA-XXXXX-X');
   ga('send', 'pageview');
</script>

<!-- build:js(.) scripts/vendor.js -->
<!-- bower:js -->
<script 
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/bootstrap/dist/js/bootstrap.js"></script>
<script src="bower_components/angular-animate/angular-animate.js"></script>
<script src="bower_components/angular-cookies/angular-cookies.js"></script>
<script src="bower_components/angular-resource/angular-resource.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="bower_components/angular-sanitize/angular-sanitize.js"></script>
<script src="bower_components/angular-touch/angular-touch.js"></script>
<script src="bower_components/jquery-ui/jquery-ui.js"></script>
<!-- endbower -->
<!-- endbuild -->

    <!-- build:js({.tmp,app}) scripts/scripts.js -->
    <script src="scripts/app.js"></script>
    <script src="scripts/controllers/main.js"></script>
    <script src="scripts/controllers/about.js"></script>
    <!-- endbuild -->

这是我每次尝试新事物时得到的结果:&#39; $&#39;没有定义。 如果有人能帮助我,我将非常感激。

我也尝试过:

src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

它仍然不起作用。

1 个答案:

答案 0 :(得分:1)

您的代码中必须注意的几件事情。

首先你要加载jQuery两次。请加载jQuery一次。

第二,如果你的jQuery异步加载,这有时会产生问题。这意味着在jquery加载之前首先调用您的代码。这是不正确的。请确保在其他调用方法之前加载jQuery。

第三,如果你正在使用angular,那么使用依赖注入功能来解决角度服务或控制器中的'$'依赖性。