为什么我的插件没有加载?引用了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不是函数
答案 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指出了正确的问题,但我对该解决方案有另一个建议:使用RegisterClientScriptInclude(example)
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}}