2016-09-28 247 views
0

我想從jQuery中刪除URL的參數。實際上,參數必須動態傳遞,並且應該是點擊時父元素的文本。然後添加一個前綴後,我需要通過它的功能。將參數傳遞給函數onclick jQuery

如下面所示的圖像,當有人點擊了明確的聯繫,它提取過濾器的名字來自它的標題標題即COLOR,加入一些前綴後,說js_,然後通過這個js_color工作。

到現在爲止,我已經做了這樣的事情,但似乎並不奏效。你能幫我解決嗎?

感謝

編輯:

如果我手動傳遞參數值的方式,這是工作的罰款。

工作:removeParam( 「js_color」,URL)

不工作:removeParam(PARAM,URL)

小提琴:對於第一個參數https://jsfiddle.net/jz1dyh9r/

功能沒有得到價值。

enter image description here

// 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; 
    }); 

//參考:Remove a parameter to the URL with JavaScript

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; 
    }  
+0

如果你記錄'param'和'url',你會得到什麼? – adeneo

+0

如果我手動傳遞參數,它工作正常 – Rick

+0

顯然'param'不是你想象的那樣,並且你是否嘗試將它記錄到控制檯。 – adeneo

回答

1

你比較字符串可以有空格和換行包裝它們,比較它們

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; 
    }  
之前使用的字符串 trim()