2016-09-28 164 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()