Jquery将上下文菜单绑定到动态元素id

时间:2012-10-19 19:04:05

标签: javascript dynamic contextmenu bind

基本的故事,我有一个动态处理每个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。

1 个答案:

答案 0 :(得分:0)

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

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

所以,据说你有两种选择。

  • 1)将您的dolar标志更改为下划线(推荐)

var men1 = "menu_pf1_topmen_topmen_menul_menuli_";

  • 2)更改以下代码行:

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

到此:

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