当右键单击网页中的元素时,我如何从单击的元素传递参数?
How can I pass parameters from the element clicked, when right clicking an element in a web page?
我有一个表,有很多元素。它是一个有事件的日历,每个事件都有自己的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是唯一的。
:
- 我可以通过这个函数传递参数吗?
- 如果是,怎么做?
- 如果没有,或者如果重写上下文菜单是一种不好的方式,它应该怎么做?
如果有任何相关性,这是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
问号表示后面有参数。&
是参数之间的分隔符
- 对同一类中的所有元素单击一次
- 元素单击处理程序由一个神秘的函数取消设置
- 在处理元素单击事件期间,在循环内部调用window.open()
- JS-是否可以获得元素单击位置的确切宽度
- 使用 jQuery 创建动态元素 单击事件始终返回 for 循环中的最后一个索引
- 选中父元素单击上的复选框
- 在窗口和其他元素单击时隐藏
- Polymerjs 的自定义菜单元素单击事件
- 使用 javascript 函数查找元素单击的类
- 元素单击仅使用 javascript
- 等待文档鼠标按下完成,然后元素单击才能开始
- 由于父元素的顶部和位置,子元素单击不起作用
- Jquery-在共享相同类名的其他元素之间选择一个元素(单击时)
- 目标元素单击子元素,获取父属性
- 根据元素单击更改选择选项值
- 为listview上动态生成的元素单击event
- 扩展原生元素单击事件
- 可以被许多元素使用的Javascript函数,然后区分哪个元素单击了它
- 当元素单击时隐藏iframe
- 按钮元素单击事件以切换类不起作用