我在我的脚本中创建了一个构造函数,它格式化<div>
s 以便可以即时创建和销毁它们。
这是功能:
function formatDiv(target,divId,divClass,content,onclick)
{
$("#"+target).append("<div id=\'" + divId + "\' class=\'" + divClass + "\' onclick=\'" + onclick + "\'>" + content +"</div>");
}
我一直在尝试做的是将函数调用作为数组中的字符串传递"Main()"
给主菜单,并将其分配给<div>
'sonclick=""
属性。在使用 jquery 升级我的代码之前,这工作得很好,但是现在当我单击 时<div>
,控制台返回:ReferenceError: Main is not defined
。
假设这是由包含 jquery 引起的(因为它在我的旧备份中仍然有效),我决定将构造函数更新为我们 jquery 的 .click 事件处理程序,
结果如下:
function formatDiv(target,divId,divClass,content,onclick)
{
$("#"+target).append("<div id=\'" + divId + "\' class=\'" + divClass + "\'>" + content +"</div>");
$("#"+divId).click(function(){$(onclick)});
}
,并且我将要在数组管道信息中调用的函数的格式更改为onclick
参数 from "Main()"
to Main
。
现在,当单击 a 时<div>
,什么也没有发生,没有错误或任何东西。
将 onclick 处理程序添加到我<div>
的 s 的最佳方法是什么?我使用 .click 不正确吗?Jquery 对我来说仍然是新的(尽管 w3schools 课程和 jquery 网站上的教程),所以我不得不猜测我使用不正确。任何帮助,将不胜感激。
这是整个脚本:
$(document).ready(function () {
$(Main);
//main menu
function Main()
{
var mainList = [">New List",">Show Lists",">Delete Lists"];
var onClick = [NewList,Main,Main];
var mainMenu = new Menu("Main Menu","menuMain",mainList,onClick);
mainMenu.contentMenu();
}
//new list menu
function NewList()
{
var mainList = ["> Create a New List"];
var onClick = [Main];
var newListMenu = new Menu("New List","menuMain",mainList,onClick);
newListMenu.contentMenu();
}
//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)});
}
});