3

我想更改页面上所有链接中的变量值。如果链接看起来像这样:

<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,我不知道我错过了什么?

4

2 回答 2

5

您可以使用属性 ends-with 选择器来查找href以“iPhone”结尾的链接,然后使用该.attr()方法更改值:

$("a[href$='iPhone']").attr("href", function () {
    return this.href.replace("iPhone", "Android");
});

这是一个工作示例

更新

现在您已经更新了问题并且 URL 不再以您要查找的字符串结尾,您可以改用属性 contains 选择器

$("a[href*='iPhone']").attr("href", function () {
    return this.href.replace("iPhone", "Android");
});

这是另一个工作示例

于 2012-11-28T08:51:30.590 回答
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/

于 2012-11-28T08:51:49.067 回答