你可以这样做:
$('a[href$="://www.mydomain.com/test/index.php?this_page=foo"]')
.attr('href', 'https://www.mydomain.com/test/index.php?this_page=bar');
attribute-ends-with选择器[ docs]是原生 CSS3 选择器,因此选择这些元素应该很快。当然,您也可以对http[s]
部件使用正则表达式,例如 ,.filter
但这可能会更慢(也取决于您拥有的链接数量)。
如果 URL 包含也应该是新 URL 一部分的其他参数,您必须单独处理每个链接:
// Using the attribute-contains selector now. This still assumes that
// `this_page=foo` is the first parameter in the URL
var pattern = /^https?:\/\/www.mydomain.com/test/index.php?this_page=foo(&|$)/;
$('a[href*="://www.mydomain.com/test/index.php?this_page=foo"]')
.attr('href', function(i, val) {
return val.replace(pattern, 'https://www.mydomain.com/test/index.php?this_page=bar$1');
});
如果this_page
可以在 URL 中的任何位置,则可以获取包含this_page=foo
和基本 URL 的所有链接。这仅在没有其他以 开头的页面值时才有效foo
:
var pattern_page = /([?&])this_page=foo(&|$)/;
$('a[href*="://www.mydomain.com/test/index.php?"][href*="this_page=foo"]')
.attr('href', function(i, val) {
return val.replace('http:', 'https:')
.replace(pattern_page, '$1this_page=bar$2');
});