[英]How can I add current class to a clicked element and removing it when clicking on another element?
[英]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是唯一的。
所以:
如果有任何相关性,这就是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.