2012-10-09 71 views
0
$(function() { 
    $('#dialog').click(function() { 
     alert("hello"); 
    });  
}); 

$('select').yaselect(); 

我真的很困惑JavaScript腳本包含如何工作。 因此,該對話框的點擊處理程序正常工作。 但yaselect沒有。我得到$(「選擇」)。yaselect不是一個函數jquery選擇器「不是函數」,大概包括腳本

所以jQuery似乎工作,但yaselect不知何故沒有。它包含在文件的頭部分中。

<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/libs/jquery-1.7.2.min.js?"></script> 
<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/libs/jquery-ui-1.8.20.custom.min.js"></script> 
<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/libs/jquery.yaselect.min.js"></script> 

然而,Yii框架不知何故又包括jQuery的頭部段後:

<script type="text/javascript" src="/assets/ab20866e/jquery.js"></script> 
<script type="text/javascript" src="/assets/ab20866e/jquery.yiiactiveform.js"></script> 

我理解這可能是一個問題,但是我接手這個代碼,我是新來的Yii和所以我很困惑該怎麼做。

+1

檢查渲染的網頁的網址,並確保它指向3個腳本的正確文件夾。 – Archer

+0

@fablife,在同一頁面上需要兩個版本的jQuery是不尋常的,但不是未知的。如果這是有意完成的,那麼在第一個標記對之後和第二個之前應該有一個'var foo = jQuery.noConflict()'語句。否則,第二個版本會簡單地覆蓋第一個版本,這樣第二個版本就會在頁面的生命週期中持續存在。 –

回答

0

http://www.yiiframework.com/wiki/311/assetmanager-clearing-browser-s-cache-on-site-update/

這似乎解決問題。 在Yii框架中,您可以使用AssetManager來處理靜態資源。如果他們然後通過AssetManager引用而不是直接將它們包含在html源文件中,那麼yii框架會注意只包含一次資源。

尼斯:)

+1

恭喜fablife。爲了保持整潔,你可能想接受你自己的答案。 –

+0

謝謝!我將在2天內完成這項工作:)。 – faboolous

+0

啊對了,那個老問題:( –

2

這是由於具有yaselect()的特定腳本;實施未被正確納入。如果你瀏覽你的javascript代碼,你可以在代碼中斷處找到它。點擊處理程序可能正常工作,因爲jquery文件已被正確導入。

也不要忘記檢查jQuery的複製衝突(瞭解更多關於noConflict())。這也可能導致問題。所以一定要刪除重複,在你的情況下,你已經包括jquery以及框架了。嘗試在整個網站上使用單一版本的jquery。

if (jQuery) { 
alert('jQuery is loaded!'); 
} 

通過使用上面的代碼,你可以檢查jquery是否存在於頁面中。如果jquery不存在於你可以包含的頁面中。