- = - 这个代码功能。我没有意识到,因为没有功能/功能之间没有改变,因此存在问题。谢谢你的帮助(特别是Niko谁让球滚动并帮助我对jquery语法形成更丰富的理解) - = -
我手工编写了这个脚本,最后决定将其更新为jquery,以便习惯于此,并简化代码。这应该是一个简单的菜单(它之前做过)。
$(document).ready(function () {
破碎的代码“taskMaster.js”:
$(document).ready(function () {
//main menu
function Main()
{
var mainList = ["New List","Show Lists","Delete Lists"];
//var onClick = [New,Lists,Delete];
var mainMenu = new Menu("Main Menu","menuMain",mainList/*,null*/);
mainMenu.contentMenu();
}
$(Main);
//menu class
function Menu(name,divClass,content/*,onclick*/)
{
$("#interface").html(null);
//title
formatDiv("interface",name,divClass,name/*,null*/);
//return
if(name != "Main Menu")
{
formatDiv(name,null,"return","^ Main Menu","Main()");
}
//display options
this.contentMenu = function()
{
for(i=0; i<content.length; i++)
{
formatDiv("interface",content+i,"menuContent",content[i]/*,onclick[i]*/);
}
}
}
//format divs
function formatDiv(target,divId,divClass,content/*,onclick*/)
{
$("#"+target).append("<div id=\'" + divId + "\' class=\'" + divClass + "\'>" + content +"</div>");
/*$("#"+divId).click(function()
{
onclick;
});*/
}
});
我注释掉了未使用的行,但它显示“$”为未定义的
这是HTML:
<html>
<head>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="taskMaster.js"></script>
<link rel="stylesheet" type="text/css" href="taskMaster.css" />
</head>
<body>
<div id="interface">
</div>
</body>
</html>
据我所知,这个html没有任何问题 - 之前的格式相同。所有改变的是我引入了jquery并更改了taskMaster.js中的一些命令以使用“$”。
答案 0 :(得分:3)
好的,我现在将此作为答案发布,因为在这里提供一些示例更容易。
首先是:每当您执行访问DOM的操作(例如$("#interface").html(null);
)时,您首先需要确保DOM已准备就绪。这就是“准备好”事件的目的:
$(document).ready(function() {
/* The code here is executed when the DOM is ready! */
});
因此,如果“Main()”是一个关闭所有内容的函数,您可以简单地列出它以便在DOM准备就绪时调用:
function Main() {
/* ... */
}
$(document).ready(Main);
大多数情况下,将整个JavaScript代码封装在“ready”事件处理程序中也是安全的:
$(document).ready(function() {
function Main() { /* ... */ }
function formatDiv(...) { }
// ...
// All functions are defined, now let's go:
Main();
});
现在点击处理程序:jQuery的“click()”函数需要在单击相应的DOM元素时调用的函数。您当前正在向其传递“New()”等字符串,但您应该直接传递这些函数。为此,请以这种方式更改“Main()”中的代码:
// Old: var onClick = ["New()","Lists()","Delete()"];
var onClick = [New, Lists, Delete]; // New
这会将实际函数添加到数组中,而不仅仅是它们的名称。