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