1

基本故事,我有一个动态处理每个 div id 的系统。我决定用我自己的一个来接管上下文菜单,只要元素的 id 是硬编码的,它就可以工作。我一直在尝试编写一个函数,该函数从数组列表中获取元素名称,并且它的抛出错误从左到右。

function menuclick()
{
alert("Menuclick Called");
var limen= ["armenu", "ormenu", "prmenu", "apmenu", "auxmenu", "itmenu", "sysmenu"];
var menues= Array();
var men1 = "menu$pf1$topmen$topmen$menul$menuli$";
for (idx=0;idx<6;idx++){
    menues[idx] = "#"+men1+limen[idx];
    $(menues[idx]).bind("contextmenu", this.id, function(e) {
        $('#example-menu').css({
            top: e.pageY+'px',
            left: e.pageX+'px'
        }).show();
return false;
});
    alert(menues[idx]);
}
return;
}

$(menues[idx]).bind 是导致问题的原因,主要是 menues[idx]。但我不知道为什么。有什么建议么?

编辑**忘了提,萤火虫显示的错误是:

“未捕获的异常:语法错误,无法识别的表达式:$pf1$topmen$topmen$menul$menuli$armenu”

编辑** 这使用 php 从数据库中获取 div id。

4

1 回答 1

0

ohhh.NET及其愚蠢的约定。您正在尝试引用“名称”而不是“id”。您的菜单标记应如下所示:

<div name="menu$pf1$topmen$topmen$menul$menuli$armenu" id="menu_pf1_topmen_topmen_menul_menuli_armenu"> ... </div>

所以,话虽这么说,你有两个选择。

  • 1)将你的美元符号改为下划线(推荐)

var men1 = "menu_pf1_topmen_topmen_menul_menuli_";

  • 2)更改以下代码行:

menues[idx] = "#"+men1+limen[idx];

对此:

menues[idx] = "[name='" + men1 + limen[idx] + "']";

于 2012-10-19T19:24:08.120 回答