![](/img/trans.png)
[英]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.