当右键单击网页中的元素时,我如何从单击的元素传递参数?

How can I pass parameters from the element clicked, when right clicking an element in a web page?

本文关键字:元素 单击 参数 网页 右键      更新时间:2023-09-26

我有一个表,有很多元素。它是一个有事件的日历,每个事件都有自己的ID号,以及三种不同类别之一,我们称之为a, B和c。

现在,出于样式的原因,类别也实现了CSS-classes,它们具有相同的名称。

我已经搜索了一点关于如何实现一个"右键点击监听器"与javascript/JQuery。我尝试了几种不同的解决方案,然后决定重写上下文菜单功能,即右键通常会触发。我还能够通过传递参数来区分类别,只有在单击A, B和C的元素时才应该覆盖上下文菜单。下面的代码可以很好地工作:

$(document).on("contextmenu", (".A, .B"), function(e) {
    $.colorbox({width:"554px", height:"480px", iframe:true, href:"myurl"});
                    return false;
                });
$(document).on("contextmenu", (".C"), function(e) {
    $.colorbox({href:"myurl"});
                    return false;
                });  

colorbox,如果不熟悉它,它只是一个弹出窗口,作为我的日历事件的编辑器实现。然而,我希望传递点击的识别号码的来源,我还没有能够找到如何。这些ID是唯一的。

:

  1. 我可以通过这个函数传递参数吗?
  2. 如果是,怎么做?
  3. 如果没有,或者如果重写上下文菜单是一种不好的方式,它应该怎么做?

如果有任何相关性,这是Java web应用程序的一部分。我在编码时使用jstl和jsp。

谢谢。编辑:

有两个函数。顶部是我在一些复选框上使用的changellistener,它们可以工作。底部是覆盖的上下文菜单,但它不起作用。不知何故,$函数似乎脱离了父函数,并忽略了之后的所有内容。返回语句不起作用,出现了上下文菜单。

$(document).ready(
    function() {
        $('.toggle').change(function() {
        var id = this.value;
        $('.' + id).toggle(this.checked);
    });
});
$(document).ready(
    function(){
        $(".A, .B").contextmenu(function() {
            var id = $(this).Attr("class");
            alert(id);
            return false;
        });
    });

编辑2:

换句话说,我只是解决了我自己的问题。即便如此,我也只是回答了自己的问题。我已经弄清楚了如何传递至少一个参数,但它仍然需要是给定html元素的集合参数之一,这次是。我将所需的标识号设置为元素id,并像这样检索值:
$(document).ready(
function(){
    $(".A, .B").contextmenu(function() {
        var id = this.id;
        alert(id);
        return false;
    });
});

但是,我觉得这是一种笨拙的实现"onrightclicklistener"的方式,特别是与我在SWING中使用的方式相比。我不回答这个问题,也许有人知道更好的解决办法。

五年过去了,我想是时候回答我自己的问题了。

//my standard settings object, only relevant to colorbox
var popup_settings = {
    opacity : "0.6",
    width : "554px",
    height : "640px",
    iframe : true
}
//executes when the document has finished loading
$(document).ready(function(){
    //ovverrides right click function
    $(".A, .B").contextmenu(function() {
        var id = $(this).attr("data-value");
        var settings.href = "myURL?id=" +id; //adds the parameter directly in the URL
        $.colorbox(calendarelement_editor_settings);
        return false;
    });
});

这显然是一个特定的颜色盒设置,但很多代码是相关的任何设置。当您通过jquery将函数绑定到事件时,就像我在这里对contextmenu所做的那样,单击的特定元素可以通过this访问。所有的jquery函数都可以通过$(this).anythingInTheAPI();在元素上使用,就像获得属性数据值一样,在我的情况下。

任何其他功能,如$(this).hide(),也可用。

现在我有了想要传递的属性,下一步是将其包含在新页面的请求中。这个弹出窗口会在模态容器中打开一个单独的页面。有许多方法可以做到这一点,但最简单的方法是将参数直接包含为URL的一部分,并实现期望它的后端。要在url中包含参数,可以写入

myURL?firstName=firstValue&SecondName=SecondValue

问号表示后面有参数。&是参数之间的分隔符