2016-09-28 25 views
0

jqueryを使用してURLからパラメータを削除しようとしています。実際には、パラメータは動的に渡されなければならず、クリック時に親要素のテキストでなければなりません。その後、接頭辞を追加した後、私はそれを関数に渡す必要があります。以下に示す画像のようにパラメータを関数onclick jQueryに渡す

、誰かがクリアリンクをクリックしたときに、それはCOLORすなわちその見出しのタイトルからフィルタ名を取得し、いくつかの接頭辞を追加した後、js_を言って、その後に機能するには、このjs_colorを渡します。

これまでのところ、私はこのようなことをしましたが、うまくいかないようです。あなたは私を助けてくれますか?

おかげ

編集:私は手動でのparam値を渡すと

、それが正常に動作しています。

作業:removeParam( "js_color"、URL)

を動作しない:removeParam(パラメータ、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

私が手動でparamを渡すと、それはうまく動作しています – 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()を使用し、比較文字列はスペースとラインがそれらを包む壊す持っていることがあります
関連する問題