簡體   English   中英

將參數傳遞給onclick jQuery函數

[英]Pass parameter to function onclick jQuery

我正在嘗試使用jquery從URL中刪除參數。 實際上,參數必須動態傳遞,並且應該是單擊時父元素的文本。 然后在添加前綴后,我需要將其傳遞給函數。

如下圖所示,當某人單擊“清除”鏈接時,它會從其標題中獲取過濾器名稱,即COLOR ,在添加一些前綴js_之后 ,然后將此js_color傳遞給函數。

到現在為止,我已經做了類似的事情,但是似乎沒有用。 你能幫我一下嗎。

謝謝

編輯:

如果我手動傳遞參數值,則可以正常工作。

工作 :removeParam(“ js_color”,url)

不起作用 :removeParam(param,url)

小提琴: https : //jsfiddle.net/jz1dyh9r/

函數未獲取第一個參數的值。

在此處輸入圖片說明

    // Append Clear Link to element
    $('.woof_redraw_zone .woof_container_inner h4').each(function(){
        $(this).append('<a class="clear_filters">Clear</a>');
    });

    // Extract parameter, pass it to function and generate new URL
    $('.woof_redraw_zone .woof_container_inner h4').click(function(){
        var url = window.location.href;
        var prefix = ("pa_");
        var key = $(this).clone().children().remove().end().text().toLowerCase();
        var param = prefix + key;
        var alteredURL = removeParam(param, url);
        console.log( removeParam(param, url) );
        // window.location.href = alteredURL;
    });

//參考: 使用JavaScript刪除URL的參數

    function removeParam(key, sourceURL) {
        var rtn = sourceURL.split("?")[0],
            param,
            params_arr = [],
            queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
        if (queryString !== "") {
            params_arr = queryString.split("&");
            for (var i = params_arr.length - 1; i >= 0; i -= 1) {
                param = params_arr[i].split("=")[0];
                if (param === key) {
                    params_arr.splice(i, 1);
                }
            }
            rtn = rtn + "?" + params_arr.join("&");
        }
        return rtn;
    }       

您比較的字符串可能有空格和換行符,請在對其進行比較之前在字符串上使用trim()

function removeParam(key, sourceURL) {
        var rtn = sourceURL.split("?")[0],
            param,
            params_arr = [],
            queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
        if (queryString !== "") {
            params_arr = queryString.split("&");
            for (var i = params_arr.length - 1; i >= 0; i -= 1) {
                param = params_arr[i].split("=")[0];
                if (param.trim() === key.trim()) { // compare trimmed strings
                    params_arr.splice(i, 1);
                }
            }
            rtn = rtn + "?" + params_arr.join("&");
        }
        return rtn;
    }       

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM