Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在网页中右键单击元素时,如何从单击的元素传递参数?_Javascript_Jquery_Contextmenu_Parameter Passing_Right Click - Fatal编程技术网

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

Javascript 在网页中右键单击元素时,如何从单击的元素传递参数?,javascript,jquery,contextmenu,parameter-passing,right-click,Javascript,Jquery,Contextmenu,Parameter Passing,Right Click,我有一张桌子,里面有很多元素。这是一个包含事件的日历,每个事件都有自己的ID号,以及三个不同类别中的一个,我们称它们为a、B和C 现在出于样式化的原因,这些类别也实现了CSS类,它们具有相同的名称 我搜索了一些关于如何用javascript/JQuery实现“右键单击侦听器”的信息。在设置右键通常触发的contextmenu函数覆盖之前,我尝试了两种不同的解决方案。通过传递参数,我还能够区分类别,即只有在单击A、B和C元素时才应该覆盖contextmenu。以下代码可以完美地工作: $(docu

我有一张桌子,里面有很多元素。这是一个包含事件的日历,每个事件都有自己的ID号,以及三个不同类别中的一个,我们称它们为a、B和C

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

我搜索了一些关于如何用javascript/JQuery实现“右键单击侦听器”的信息。在设置右键通常触发的contextmenu函数覆盖之前,我尝试了两种不同的解决方案。通过传递参数,我还能够区分类别,即只有在单击A、B和C元素时才应该覆盖contextmenu。以下代码可以完美地工作:

$(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,如果不熟悉的话,只是一个弹出窗口,作为我的calendarevents的编辑器实现。然而,我希望传递的来源点击的识别号,我一直无法找到如何。这些ID是唯一的

因此:

  • 我可以通过这个函数传递参数吗
  • 如果是,怎么做
  • 如果不是,或者如果覆盖上下文菜单是一种不好的方式,那么应该如何做呢
  • 如果有任何关联的话,这是Java web应用程序的一部分。我在编码时使用jstl和jsp

    多谢各位

    编辑:

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

    $(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)在元素上使用类似于获取属性数据值

    还可以使用任何其他函数,如
    $(this).hide()

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

    myURL?firstName=firstValue&SecondName=SecondValue
    

    问号表示参数如下。
    是参数之间的分隔符。

    要在contextmenu函数或colorbox函数中使用ID吗?您可以使用
    $(this)获取id。attr('id')
    @BrianGlaz:我需要从单击的元素中检索参数,并将其传递到colorbox。我希望这能回答你的问题。你的建议是我还没有尝试过的,所以我会读更多关于它的内容,并进行实验。我对JQuery和javascript还是相当陌生的。谢谢你的指点。我会让你知道结果的。当我写$(this.attr('id')行时,它似乎中断了我的函数,并且忽略了它之后的所有内容。这意味着即使我的return-false语句也不起作用,并且contextmenu已备份。然而,在一个类似的函数中,我听到一个复选框,它获取一个“this”的值,并使用它。代码在问题更新中