如何使用jquery更改链接中的变量值

时间:2012-11-28 08:48:21

标签: jquery

我想更改页面上所有链接中的变量值。 如果链接如下所示:

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

2 个答案:

答案 0 :(得分:5)

您可以使用attribute ends-with selector查找以“iPhone”结尾的href的链接,然后使用.attr()方法更改值:

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

这是working example

<强>更新

现在您已经更新了问题并且网址不再以您要查找的字符串结尾,您可以使用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/