2012-05-08 3 views
0

Я хотел бы изменить URL-адрес ссылки.Как изменить href ссылки с помощью JQuery?

Вот код

<div id="content"> 
    ... 
    <a href="/mbs/articleVC.php?mbsC=freebbs&mbsIdx=822907&cpage=10">link</a> 
    <a href="/mbs/articleVC.php?mbsC=freebbs&mbsIdx=822908&cpage=11">link</a> 
    <a href="/mbs/articleV.php?mbsC=freebbs&mbsIdx=802894&cpage=&mbsW=search&select=stt&opt=1&keyword=keyword1">link</a> 
    <a href="/mbs/articleV.php?mbsC=freebbs&mbsIdx=802895&cpage=&mbsW=search&select=stt&opt=1&keyword=keyword2">link</a> 
    ... 
</div> 

Заменить:

<div id="content"> 
    ... 
    <a href="/mbs/articleV.php?mbsC=freebbs&mbsIdx=822907&cpage=10">link</a> 
    <a href="/mbs/articleV.php?mbsC=freebbs&mbsIdx=822908&cpage=11">link</a> 
    <a href="/mbs/articleV.php?mbsC=freebbs&mbsIdx=802894&cpage=&mbsW=search&select=stt&opt=1&keyword=keyword">link</a> 
    <a href="/mbs/articleV.php?mbsC=freebbs&mbsIdx=802895&cpage=&mbsW=search&select=stt&opt=1&keyword=keyword2">link</a> 
    ... 
</div> 

Есть много ссылок на этой странице.
Как заменить из статьи VC .php 'to' артикул V .php 'используя jQuery?

+0

мне очень интересно "почему?" вы хотите это сделать. Если вы постоянно перемещаете или переименовываете страницы, HTML-код должен быть обновлен. В противном случае это должно быть сделано на сервере с помощью 'mod_rewrite' или' redirect 301'. – Sparky

+0

@ Sparky672 Я думаю, что это хороший способ. Но я не могу. Потому что эта проблема заключается в создании расширения хром. – bbbig

+0

Возможно, вы можете дать подсказку относительно реальной цели такого расширения браузера. – Sparky

ответ

1

ПЕРВЫХ ЛУЧШЕ И БЫСТРЕЕ

$('#content a').attr('href', function(index, Oldhref) { 
    return Oldhref.replace(/articleVC/ ,'articleV') 
}); 

или

$('#content a').each(function() { 
    $(this).attr('href', $(this).attr('href').replace(/articleVC/ ,'articleV')); 
}); 
+0

Спасибо за руководство, я ценю это – bbbig

+0

@ user1382616 Добро пожаловать, лучший способ поблагодарить принимает в качестве ответа. – thecodeparadox

+0

@thecodeparadox +1 второй может быть сделан так же быстро и эффективно, как и первый, если вы используете 'this.href = this.href.replace (...)'.Однако, если эффективность является проблемой, цикл for будет способом идти в любом случае. –

0

Вы можете использовать:

$('#content a').each(function() { 
    $(this).attr('href', $(this).attr('href').replace('articleVC.php','articleV.php')); 
}); 

Надеется, что это помогает :)

0
$('a').each(function() { 
    $(this).attr('href', $(this).attr('href').replace('articleVC.php', 'articleV.php')); 
}); 

Вы можете использовать функцию each перебрать все совпавшие <a> элементов, для каждого из них принимает атрибут «HREF» по телефону attr('href'), используйте replace метод String, чтобы получить заменить строку, а затем назначить его снова к атрибуту 'href'.

1

Вы можете попробовать:

$('#content a[href*="articleVC.php"]').each(function() { 
    href = $(this).attr('href').replace('articleVC.php' ,'articleV.php'); 
    $(this).attr('href', href); 
});​​ 

Test Here

1
$('a', '#content').each(function() { 
    this.href = this.href.replace('articleVC', 'articleV'); 
});​ 

Если быстрее по какой-то причине лучше :-)

var elms = document.getElementsByTagName('a'); 
for (i=0; i<elms.length; i++) { 
    elms[i].href = elms[i].href.replace('articleVC', 'articleV'); 
} 
0

Вы можете добиться этого с помощью регулярных выражений.

Использование JQuery: (jsfiddle)

$('#content a').each(function() { 
    this.href = this.href.replace(/articleVC\.php/, 'articleV.php'); 
}); 

В ванильным JavaScript: (jsfiddle)

var links = document.getElementById('content').children; 
for(l in links) { 
    links[l].href = links[l].href.replace(/articleVC\.php/, 'articleV.php'); 
}; 
Смежные вопросы