Ответ 1
Если вас интересуют плагины, там jQuery Объект строки запроса. Это позволит вам просто проверять параметры в querystring и, при необходимости, добавлять больше, удалять или редактировать другие.
Как добавить, скажем, что-то вроде ajax=1
ко всем ссылкам на моей странице с jquery. Мне также нужно будет проверить, есть ли у url существующие параметры. например, http://example.com/index.php?pl=132
должно стать http://example.com/index.php?pl=132&ajax=1
Кроме того, если ссылка не имеет каких-либо параметров, например http://example.com/index.php
, она станет http://example.com/index.php?ajax=1
. Я хочу загрузить jQuery script на документе, чтобы все ссылки были изменены при загрузке страницы.
Если вас интересуют плагины, там jQuery Объект строки запроса. Это позволит вам просто проверять параметры в querystring и, при необходимости, добавлять больше, удалять или редактировать другие.
Вы можете сделать что-то вроде этого:
$(function() {
$("a").attr('href', function(i, h) {
return h + (h.indexOf('?') != -1 ? "&ajax=1" : "?ajax=1");
});
});
В document.ready
это смотрит на каждый <a>
, смотрит на него href, если он содержит ?
уже добавляет &ajax=1
, если он этого не делает, он добавляет ?ajax=1
.
Вот так:
$(function() {
$('a[href]').attr('href', function(index, href) {
var param = "key=value";
if (href.charAt(href.length - 1) === '?') //Very unlikely
return href + param;
else if (href.indexOf('?') > 0)
return href + '&' + param;
else
return href + '?' + param;
});
})
Вот решение, которое я собрал для собственного Javascript, оно поддерживает существующие строки запросов и привязки:
function addToQueryString(url, key, value) {
var query = url.indexOf('?');
var anchor = url.indexOf('#');
if (query == url.length - 1) {
// Strip any ? on the end of the URL
url = url.substring(0, query);
query = -1;
}
return (anchor > 0 ? url.substring(0, anchor) : url)
+ (query > 0 ? "&" + key + "=" + value : "?" + key + "=" + value)
+ (anchor > 0 ? url.substring(anchor) : "");
}
Я разместил свои существующие тесты на JSBin: http://jsbin.com/otapem/2/
Принимая то, что указано выше, это лучший способ конкатенации параметров ссылок.
Также избегайте ссылки с href как href= "Javascript: YourFunction();"
$(function(){
var myRandom = getRandom();
$('a[href]').each(function(i){
var currHref = $(this).attr("href");
var isAfunction = currHref.substring(0,10);
if(isAfunction == "javascript"){
$(this).attr("href",currHref);
}else{
if (currHref.charAt(currHref.length - 1) === '?')
$(this).attr("href",currHref);
else if (currHref.indexOf('?') > 0)
$(this).attr("href",currHref+"&rand="+getRandom());
else
$(this).attr("href",currHref+"?rand="+getRandom());
}
});
});
function getRandom(){
var randomnumber = Math.floor(Math.random()*10000);
return randomnumber;
}
href должен быть полным и исправленным URL.
$(function() {
$('a[href]').attr('href', function(index, href) {
var url = new URL(href);
url.searchParams.set('ajax',1);
return url;
});
})