我正在尝试使用jquery切换A标记中href属性中最后一个参数的值。
在以下之间切换:
target.php?id=123&search=selected&format=html&pricing=false
和:
target.php?id=123&search=selected&format=html&pricing=true
我有个不错的开始:
$('#option-include-prices').on('click', function(){
var buttons = document.getElementsByClassName('download-button');
for (var i=0; i < buttons.length; i++) {
var button = buttons[i];
var href = $(button).attr('href');
var bool = (href.indexOf('false') > 0) ? 'true' : 'false';
$(button).attr('href', href.replace('false', bool)); // obviously a problem
}
});
所以我可以找到值是真还是假&amp;相应地设置一个变量 - 但是如果已经将值设置为true(即无法将其切换回false),则replace()方法显然不起作用。
应该用什么方法来切换变量?
答案 0 :(得分:1)
我编写了一个名为updateParam
的函数,因此您可以最佳地使用它,而不仅仅是在链接中关闭和打开布尔值。我还为函数编写了一个包装器,以便您可以看到如何使用它。
function updateParam (url, param, value) {
return url.replace(/(.*?\?|)(.*?)=(.*?)(&|$)/g, function (ignore,starter,key,v,ending) {
if (key === param) {
v = value;
}
return starter + key + "=" + v + ending;
});
}
$liveUpdate = $("#liveUpdate");
$("#boolTest").on("click", function () {
var isChecked = $(this).is(":checked");
$liveUpdate.attr("href",
updateParam($liveUpdate.attr("href"),"pricing",isChecked)
);
console.log($liveUpdate.attr("href"));
}).trigger("click");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Toggle off and on this checkbox to test the code: <input type="checkbox" id="boolTest" />
<hr />
<a id="liveUpdate" href="target.php?id=123&search=selected&format=html&pricing=false">testing link</a>
&#13;