jquery插件contextjs怎么获取点击右键的对象

发布于 2022-09-02 08:53:55 字数 35 浏览 14 评论 0

jquery插件contextjs怎么获取点击右键的对象

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

芯好空 2022-09-09 08:53:55

我猜你得针对不同的对象绑定不同的 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 中自由处理了。

如果每个的菜单都不同肯定是一个个写,你也不会在这里纠结了

怀中猫帐中妖 2022-09-09 08:53:55

我解决了这个问题 但不清楚是不是最好的解决办法
首先在content.js中添加一个全局变量

var clickEle = ""; //全局变量 存储选中element

然后新写一个方法

function getClickEle(){ // 自定义方法给 调用者使用
   return clickEle;
}

在右键事件中修改 全局变量clickELe 102行

$(document).on('contextmenu', selector, function (e) {
   clickEle = $(this);//记录当前点击的element
});

最后 给context 添加一个获取选中element 的方法 140行

return {
        init: initialize,
        settings: updateOptions,
        attach: addContext,
        destroy: destroyContext,
        getClickEle: getClickEle // 新添加的方法
    };

使用方法

context.getClickEle() // 返回点击右键的 juqery对象
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文