0
$(function() {
    $('#dialog').click(function() {
      alert("hello");
    });    
});

$('select').yaselect();

我真的对 javascript 脚本包含的工作方式感到困惑。所以对话框的点击处理程序工作正常。但是 yaselect 没有。我得到 $("select").yaselect 不是一个函数

所以 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 框架稍后在 head 部分中以某种方式再次包含 jquery:

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

我知道这可能是个问题,但是我接管了这段代码,我是 yii 的新手,所以对该怎么做感到困惑。

4

2 回答 2

2

这是由于具有 yaselect(); 的特定脚本所致。未正确包含实施。如果您浏览您的 javascript 代码,您可以在代码中断的地方找到它。单击处理程序可能工作正常,因为 jquery 文件已正确导入。

另外不要忘记检查jQuery 重复冲突(阅读有关noConflict()的更多信息)。这也可能导致问题。因此,请确保删除重复项,在您的情况下,您已经包含了 jquery 以及框架。尝试在整个站点中使用单一版本的 jquery。

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

通过使用上面的代码,您可以检查页面中是否存在 jquery。如果页面中不存在 jquery,则可以包含。

于 2012-10-09T16:27:28.813 回答
0

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

这似乎可以解决问题。在 Yii 框架中,您可以使用 AssetManager 来处理静态资源。如果它们然后通过 AssetManager 引用而不是直接将它们包含在 html 源文件中,yii 框架会注意资源只包含一次。

好的 :)

于 2012-10-09T16:34:38.687 回答