繁体   English   中英

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

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

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

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

我搜索了一些有关如何使用javascript / JQuery实现“右键单击侦听器”的信息。 在设置上下文菜单功能的覆盖之前,我尝试了几种不同的解决方案,通常会触发右键。 我还可以通过传递参数来区分类别,即仅在单击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;
                });  

颜色框(如果不熟悉)只是一个弹出窗口,实现为我的calendarevents的编辑器。 但是,我希望传递点击标识号的来源,但我还无法找到方法。 这些ID是唯一的。

所以:

  1. 我可以通过此函数传递参数吗?
  2. 如果是这样,怎么办?
  3. 如果不是,或者该优先上下文菜单是一种不好的实现方式,应该如何做?

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

谢谢。

编辑:

这是两个功能。 顶部是我在某些复选框上使用的变更侦听器,它们可以正常工作。 底部是覆盖的上下文菜单,但它不起作用。 似乎$ function突破了父函数,并忽略了之后的所有内容。 return语句不起作用,并显示上下文菜单。

$(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访问。 可以通过$(this).anythingInTheAPI();在元素上使用所有jquery函数$(this).anythingInTheAPI(); 就我而言,就像获取属性数据值一样。

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

现在我有了要传递的属性,下一步就是将其包括在对新页面的请求中。 此弹出窗口在模式容器内打开一个单独的页面。 有很多方法可以做到这一点,但是最简单的方法是将参数直接包含在URL中,并实现一个期望的后端。 要在网址中包含参数,您可以编写

myURL?firstName=firstValue&SecondName=SecondValue

问号表示正在跟随参数。 &是参数之间的分隔符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM