JQuery:如何替换两个特定部分之间属性的一部分?

时间:2015-06-21 13:14:56

标签: javascript jquery facebook

我想更改src属性中url的部分。这将通过单击功能调用。这可能会更改类似按钮的语言而不刷新页面,以及之前选择的其他语言。

这很有效,但由于有多种语言,它只能运行一次;当基地"状态" hu_HU(匈牙利语):

$('.fb-like').attr('src', function(i, src) {
return src.replace("hu_HU","ro_RO"); 
});

我根据此问题中的解决方案更改了代码以完成目标:JQuery: how to replace all between certain characters?但没有任何成功:

$('.fb-like').attr('src', function(i, src) {
return src.replace(/locale\=.+?\&amp/g,"locale="+ro_RO+"&amp");
});

我错过了什么?任何帮助,将不胜感激!先感谢您!

这是小提琴:http://jsfiddle.net/iorgu/a0aptp3g/2/

1 个答案:

答案 0 :(得分:2)

这与one of my earlier answers

有关

现在,您打算更改iframe的来源,因此我们不能再认为它是window.location.href。所以,我相信该功能的修改版本应该可以解决您的问题:

function setGetParameter(paramName, paramValue, url)
{
    var url = !!url ? url : window.location.href;
    if (url.indexOf(paramName + "=") >= 0)
    {
        var prefix = url.substring(0, url.indexOf(paramName));
        var suffix = url.substring(url.indexOf(paramName));
        suffix = suffix.substring(suffix.indexOf("=") + 1);
        suffix = (suffix.indexOf("&") >= 0) ? suffix.substring(suffix.indexOf("&")) : "";
        url = prefix + paramName + "=" + paramValue + suffix;
    }
    else
    {
    if (url.indexOf("?") < 0)
        url += "?" + paramName + "=" + paramValue;
    else
        url += "&" + paramName + "=" + paramValue;
    }
    return url;
}

你这样称呼它:

$('.fb-like').attr('src', setGetParameter("locale", "ro_RO", $('.fb-like').attr('src')));

结果是爱情大师成功改变了locale

Fiddle