插件无法加载

时间:2013-02-22 12:55:15

标签: jquery .net jquery-plugins javascript

为什么我的插件没有加载?引用了jquery和插件链接。插件被称为.. ..请帮我找到我在代码中缺少的内容。

 <script src="~/Scripts/jquery-1.7.1.js"></script>
  <script src="~/Scripts/chosen.jquery.js"></script>


  <select class="chzn-select" tabindex="1" style="width:350px;" data- 
    placeholder="Choose a Country">
      <option value=""></option> 
      <option value="United States">United States</option> 
      <option value="United Kingdom">United Kingdom</option> 
      <option value="Afghanistan">Afghanistan</option> 
      <option value="Albania">Albania</option>                
   </select>

   <script>

   $(document).ready(function(){
       $(".chzn-select").chosen();
   });

   </script>

我收到了萤火虫的错误:

  

TypeError:$(...)。selected不是函数

5 个答案:

答案 0 :(得分:4)

阅读评论并搜索相关问题我发现原因是因为jQuery被包含两次。请看this

我创建了这个fiddle,其中包括从cdn service中选择的内容。

如果jquery只包含一次

$(".chzn-select").chosen();

应该可以正常工作。

修改

而不是使用

$(document).ready(function(){
    $(".chzn-select").chosen();
});

$(document).bind("pageinit", function() {
    $(".chzn-select").chosen();
});

答案 1 :(得分:2)

您的jquery和/或选择的插件似乎无法加载。

尝试将其替换为:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
<script src="/scripts/chosen.jquery.js" type="text/javascript"></script>

通过打开源代码中的网址,确保确实包含chosen.jquery.js。或者在firebug或任何其他开发者控制台中检查您的网络选项卡。如果它显示404,则您的脚本不在正确的位置。

还要确保您的页面布局如下

<html>
    <head>
        <!-- your css files -->
        <link/>
    </head>
<body>
    <!-- Your html above javascript includes-->
    <select>
    ....
    </select>
    <!-- Inlcude your js files at the bottom -->
    <script src="bla.js" />
    <script>
        //your inline javascript goes below includes

    </script>
</body>

答案 2 :(得分:1)

不要在html(aspx)中使用~。您只能在代码隐藏中使用它。只需使用/scripts代替。

答案 3 :(得分:1)

我认为Archer指出了正确的问题,但我对该解决方案有另一个建议:使用RegisterClientScriptIncludeexample

public void Page_Load()
{
    var pageType = this.GetType();
    ClientScriptManager cs = Page.ClientScript;

    if (!cs.IsClientScriptIncludeRegistered(pageType, "jQuery"))
        cs.RegisterClientScriptInclude(pageType, "jQuery", ResolveClientUrl("~/Scripts/jquery-1.7.1.js"));
    if (!cs.IsClientScriptIncludeRegistered(pageType, "jQuery.chosen"))
        cs.RegisterClientScriptInclude(pageType, "jQuery.chosen", ResolveClientUrl("~/Scripts/chosen.jquery.js"));
}

这会将脚本标记放在页眉元素中,这意味着您可以删除页面本身的引用。它主要用于避免在未知虚拟目录位置(在开发环境中通常是您的开发Web服务器下的目录)进行托管时出现问题。

答案 4 :(得分:0)

这是因为您的chosen.jquery.js在JQuery尝试检查您的路径之前加载,如果您使用简单的拖放文件夹中的Js文件到您的页面,那么您不必担心{{ 1}}