2015-11-02 43 views
1

我開始與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 --> 

這就是我得到每次我嘗試新的東西時:「$」沒有定義。 如果有人能幫助我,我會非常感激。

我也tryed有:

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

,它仍然無法正常工作。

+2

您包含jQuery兩次,一次來自CDN和其他來自bower組件。刪除一個,它應該工作。 – Tushar

+0

哦謝謝,這是一個絕望的嘗試,我已經嘗試過只有其中一個,仍然沒有工作。無論如何,我會改變這個問題,謝謝你 – vict

回答

1

您必須在代碼中注意一些事情。

首先你要加載jQuery兩次。請僅加載jQuery一次。

其次,如果你的jQuery異步加載,這有時會產生問題。這意味着你的代碼在jquery加載之前先被調用。這是不正確的。請確保您的jQuery在其他調用方法之前加載。第三,如果您使用的是角度,那麼使用依賴注入功能來解決角度服務或控制器中的'$'依賴。

+0

確定第一個問題解決了。 2º我已經通過window.onload = function()包裝了我的函數,我已經閱讀它是正確的方法。 3º如何注入jquery?我有問題,我現在開始與angularjs,我有點失落 – vict

+0

檢查答案在這裏注入jQuery [鏈接](http://www.totaldotnet.com/sub/add-jquery-dependency-to-角度-js-控制器) –

+0

在所有的早晨工作之後,你已經救了我,非常感謝你! – vict

相關問題