我想更改页面上所有链接中的变量值。 如果链接如下所示:
<a href="http://www.mypage.com?type=iPhone&userId=1">The 1 link</a>
<a href="http://www.mypage2.com?type=iPhone&userId=1">The 2 link</a>
我想将type=iPhone
更改为type=Android
。但我不知道如何找到type=iPhone
所以我可以替换它?
这样做的最佳方式是什么? 感谢。
好的,这是我的真实代码。
我想做的是检查用户代理并更改appType = iPhone,如果它是一个Android。
var ua = navigator.userAgent;
if (ua.indexOf("Android") >= 0) {
var androidversion = parseFloat(ua.slice(ua.indexOf("Android") + 8));
if (androidversion < 4.0) {
alert("You have an old Android");
}
var apptype='appType=Android';
alert(apptype);
$("a[href*='appType=iPhone']").attr("href", function () {
return this.href.replace("appType=iPhone", "appType=Android");
});
}
else
{
var apptype='appType=iPhone';
alert(apptype);
}
有了它,它根本没有改变appType = iPhone,我不知道我错过了什么?
答案 0 :(得分:5)
您可以使用attribute ends-with selector查找以“iPhone”结尾的href
的链接,然后使用.attr()
方法更改值:
$("a[href$='iPhone']").attr("href", function () {
return this.href.replace("iPhone", "Android");
});
<强>更新强>
现在您已经更新了问题并且网址不再以您要查找的字符串结尾,您可以使用attribute contains selector代替:
$("a[href*='iPhone']").attr("href", function () {
return this.href.replace("iPhone", "Android");
});
这是另一个working example。
答案 1 :(得分:2)
这可以按照您想象的方式完成,但严重的是 - 质疑这是否是实现目标的最佳方式。
使用jQuery,您可以使用attribute-contains-selector找到元素:
$('a[href*="type=iPhone"]');
*=
说“属性包含”
然后你可以替换href:
$('a[href*="type=iPhone"]').attr("href",function(){
$(this).attr('href').replace('type=iPhone','type=Android');
});
但是,您应该考虑采用更好的方法来实现这一目标。例如,如果您从type=iPhone
中删除href
属性,而是在用户点击链接时确定要附加哪个type=*
,那么您就不需要做任何关于查找和替换的麻烦
例如,从这个HTML开始:
<a href="http://www.mypage.com?userId=1">The 1 link</a>
<a href="http://www.mypage2.com?userId=1">The 2 link</a>
然后假设一个包含哪个type
处于活动状态的变量:
var osType = 'iPhone'; // change to 'Android' if need be or dynamically - whatever!
使用这个jQuery:
$(document).on('click','a',function(e){
e.preventDefault();
var href = $(this).attr('href');
window.location.href = href + '&type=' + osType;
});
此技术的实例:http://jsfiddle.net/K7UNg/1/