将javascript更改为操作具有相同类而不是id的所有链接

将javascript更改为操作具有相同类而不是id的所有链接,javascript,jquery,Javascript,Jquery,我正在使用下面的代码片段将id为onelink的链接更改为另一个链接(如果altlink有内容) if ($("#onelink").length > 0) { if (altlink != '') { $("#onelink").attr('href', site_url + altlink); } } 它正在正确编辑的html是: 它把它变成: 它适用于单个id链接,但就我而言,现在我使用的是一个id,页面上有10多个链接 我假设这对单个链接有效,但事

我正在使用下面的代码片段将id为onelink的链接更改为另一个链接(如果altlink有内容)

if ($("#onelink").length > 0) {
    if (altlink != '') {
        $("#onelink").attr('href', site_url + altlink);
    }
}
它正在正确编辑的html是:

它把它变成:

它适用于单个id链接,但就我而言,现在我使用的是一个id,页面上有10多个链接

我假设这对单个链接有效,但事实并非如此:

if ($(".onelink").length > 0) {
    if (altlink != '') {
        $(".onelink").attr('href', site_url + altlink);
    }
}
它正在错误编辑的html文件:

它变成了:

http://www.website.comundefined 应该是http://www.website.com/testpage/

现在,对于多个链接,我会想:

$(".onelink").each(function(){
    if ($(this).length > 0) {
        if (altlink != '') {
            $(this).attr('href', site_url + altlink);
        }
    }
});
但是,同样的问题如上所述。

尝试检查altlink是否存在并且它不是空的:

if (altlink && altlink.length > 0) {
因此,您的完整代码将是:

$(".onelink").attr("href", function() {
    if (altlink && altlink.length > 0) {
        $(this).attr('href', site_url + altlink);
    }
});
并确保包含jQuery,并将此代码放在$document.ready函数下

片段

网站地址=http://facebook.com/; altlink=?search=praveen; $function{ $.onelink.attrref,函数{ 如果altlink&&altlink.length>0{ 返回站点url+altlink; } }; }; .onelink{背景:ccf;}
altlink确实存在,我没有包括它,但你可以从我的帖子中看到,我提到过它对使用id的单个链接有效,但一旦我切换到类,它就会失败。altlink有问题。这就是问题所在。相信我们,我们知道。这与altlink无关,而是与它与班级的斗争有关。比较,您可以看到第一个运行正常,但第二个运行不正常。@Ryflex我的解决方案对您有用吗?我还加了一把小提琴始终检查JSFIDLE onload设置。如果您使用document.ready或诸如此类,请将设置更改为head而不是onload如果$this.length>0{do?@Tushar Ha.Nothing,该怎么办。