Salve,
sul web ho trovato due funzioni, una mi aggiunge alla query string un parametro e l'altra la toglie. Un po di codice per capire meglio:
Html:
codice HTML:
<a href="#" class="servizio" data-id="1">1</a>
<a href="#" class="servizio" data-id="2">2</a>
<a href="#" class="servizio" data-id="3">3</a>
function updateQueryStringParameter(uri, key, value) {
var re = new RegExp("([?&])" + key + "=[^&#]*", "i");
if (re.test(uri)) {
return uri.replace(re, '$1' + key + "=" + value);
} else {
var matchData = uri.match(/^([^#]*)(#.*)?$/);
var separator = /\?/.test(uri) ? "&" : "?";
return matchData[0] + separator + key + "=" + value;
}
}
function removeQueryStringParameter(uri, key, value){
var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
var separator = uri.indexOf('?') !== -1 ? "&" : "?";
if (uri.match(re)) {
return uri.replace(re, '');
}
}
$('.servizio').click(function () {
var servizio = $(this).data('id');
var href = $location).attr('href');
if($(this).parent().hasClass('active')){
var url = removeQueryStringParameter(href, 'serv', encodeURIComponent(servizio));
location.href = url;
} else {
var url = updateQueryStringParameter(href, 'serv', encodeURIComponent(servizio));
location.href = url;
}
});
Queste due funzioni fanno il loro lavoro e cioè www.miosito.com?serv=1 se clicco sopra il link con la classe active elimina dalla query string serv=... se no lo modifica, invece io vorrei che cliccando sui link mi desse questo risultato www......com?serv=1,2,3 se clicco sul link con la classe active toglie dal parametro serv solo il numero che ho cliccato. Porto questo esempio: https://www.getyourguide.it/s?q=Milano&srv=prt|wca, in questo caso prt e wca sono separati da | ma fa lo stesso.
Qualche consiglio?