我有以下代码:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
});
页面因“预期的对象”而加载失败。如果我将鼠标悬停在Visual Studio中的$(文档)上,它将展开以显示其属性。这里没有其他对象,所以除非它在jquery库中失败,否则还有什么可能导致这个?
BlogEngine脚本不应该发生任何冲突。我在blog.js中将所有$变量重命名为$ BE,因此JQuery只使用$。
答案 0 :(得分:2)
为什么失败的最可能原因是{j}脚本包含标记之前出现$(document).ready()
。
它失败的方式或原因将取决于你如何包含文件,但解决此问题的一种方法是在AddJavaScriptInclude()
静态类中使用BlogEngine.NET的Utils
并在其中添加jQuery BlogBasePage
类'OnLoad
方法。
例如,
public abstract class BlogBasePage : System.Web.UI.Page
{
/* other BlogBasePage methods, properties, fileds, etc */
/// <summary>
/// Adds links and javascript to the HTML header tag.
/// </summary>
protected override void OnLoad(EventArgs e)
{
/* other BlogEngine.NET code ... */
// add jQuery to html <head> section. I've put my scripts
// in a folder named 'scripts'
AddJavaScriptInclude(Utils.RelativeWebRoot + "scripts/jquery-1.3.2.min.js", false, false);
}
}
现在jQuery将包含在<head>
中。如果您在母版页中有脚本,那么我建议将其放入<body>
以确保jQuery脚本包含在您的代码之前并避免与之前相同的情况;如果你的脚本在另一个外部文件中,那么你也可以使用AddJavaScriptInclude()
将它包含在页面中,只需确保它在添加jQuery文件后出现。
另外需要注意的一点是,重命名Blog.js文件中的变量$
和BlogEngine.NET随附的任何其他js文件,或者使用jQuery的{{$.noConflict();
可能是明智的。 1}}然后将jQuery代码包装在一个自动调用的匿名函数中,如此
(function($) {
// I can still use $ here for shortahnd for jQuery.
$(document).ready(function() {
// code to run when the DOM has loaded
});
})(jQuery);
这样你仍然可以在函数内使用$
简写jQuery。
答案 1 :(得分:0)
我不知道为什么你的例子失败了,但我很确定你可以通过这样做来获得这份文件。
$(function() {
});