簡體   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