我猜你得针对不同的对象绑定不同的 context。
如果大部分 context 是相似的,你可以考虑写一个 create 函数来为不同的对象创建 context。
给你举个例
HTML
<ul>
<li id="li1">第1行</li>
<li id="li2">第2行</li>
<li id="li3">第3行</li>
<li id="li4">第4行</li>
<li id="li5">第5行</li>
</ul>
JavaScript
如果给某个 li 添加右键菜单是这样
context.attach("#li1", {
text: "菜单项",
action: function(e) {
alert("menu for #li1");
}
});
但问题是要给每个都加,所以用一个 builder 函数
// 写个 builder 函数
function attachContext(selector) {
context.attach(selector, {
text: "菜单项",
action: function(e) {
alert("menu for " + selector);
}
})
}
// 然后给每个 li 加菜单
$("li[id]").each(function() {
var id = $(this).prop("id");
attachContext("#" + id);
})
总结:把每个菜单不同的地方提取出来作为 builder 的参数传入,包括附加到的DOM对象本身也作为参数,就可以在 action 中自由处理了。
如果每个的菜单都不同肯定是一个个写,你也不会在这里纠结了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。