Jak zmienić href dla hiperłącza za pomocą jQuery
Jak można zmienić href dla hiperłącza za pomocą jQuery?
12 answers
Za pomocą
$("a").attr("href", "http://www.google.com/")
Zmodyfikuje href wszystkich hiperłączy, aby wskazywały na Google. Prawdopodobnie jednak potrzebujesz nieco bardziej wyrafinowanego selektora. Na przykład, jeśli masz mieszankę źródła linku (hiperłącze) i docelowego linku (aka "anchor") znaczników kotwicy:
<a name="MyLinks"></a>
<a href="http://www.codeproject.com/">The CodeProject</a>
...Wtedy prawdopodobnie nie chcesz przypadkowo dodać do nich atrybutów href
. Dla bezpieczeństwa możemy określić, że nasz selektor będzie pasował tylko do znaczników <a>
z istniejącym atrybutem href
:
$("a[href]") //...
Oczywiście, pewnie masz coś ciekawszego na myśli. Jeśli chcesz dopasować anchor do konkretnej istniejącej href
, możesz użyć czegoś takiego:
$("a[href='http://www.google.com/']").attr('href', 'http://www.live.com/')
To znajdzie linki, gdzie href
dokładnie pasuje do ciągu http://www.google.com/
. Może to być zadanie dopasowujące, a następnie aktualizujące tylko część href
:
$("a[href^='http://stackoverflow.com']")
.each(function()
{
this.href = this.href.replace(/^http:\/\/beta\.stackoverflow\.com/,
"http://stackoverflow.com");
});
Pierwsza część wybiera tylko linki, gdzie href zaczyna się od http://stackoverflow.com
. Następnie zdefiniowana jest funkcja, która używa prostego wyrażenia regularnego do zastąp tę część adresu URL nową. Zwróć uwagę na elastyczność, jaką daje Ci to-wszelkie modyfikacje linku można wykonać tutaj.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-08 00:51:01
Z jQuery 1.6 i nowszymi powinieneś użyć:
$("a").prop("href", "http://www.jakcms.com")
Różnica pomiędzy prop
i attr
jest taka, że attr
chwyta atrybut HTML, podczas gdy prop
chwyta właściwość DOM.
Więcej szczegółów znajdziesz w tym poście: .prop () vs .attr()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-22 00:50:51
Użyj metody attr
podczas wyszukiwania. Możesz wyłączyć dowolny atrybut z nową wartością.
$("a.mylink").attr("href", "http://cupcream.com");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-07 18:20:45
W zależności od tego, czy chcesz zmienić wszystkie identyczne linki na coś innego, czy chcesz kontrolować tylko te w danej sekcji strony lub każdy z osobna, możesz to zrobić.
Zmień wszystkie linki do Google, aby wskazywały na Google Maps:
<a href="http://www.google.com">
$("a[href='http://www.google.com/']").attr('href',
'http://maps.google.com/');
Aby zmienić odnośniki w danej sekcji, Dodaj klasę kontenera div do selektora. Ten przykład zmieni link Google w treści, ale nie w stopce:
<div class="content">
<p>...link to <a href="http://www.google.com/">Google</a>
in the content...</p>
</div>
<div class="footer">
Links: <a href="http://www.google.com/">Google</a>
</div>
$(".content a[href='http://www.google.com/']").attr('href',
'http://maps.google.com/');
Aby zmienić poszczególne łącza niezależnie od tego, gdzie znajdują się w dokumencie, dodaj identyfikator do łącza, a następnie dodaj ten identyfikator do selektora. Ten przykład zmieni drugi link Google w treści, ale nie pierwszy ani ten w stopce:
<div class="content">
<p>...link to <a href="http://www.google.com/">Google</a>
in the content...</p>
<p>...second link to <a href="http://www.google.com/"
id="changeme">Google</a>
in the content...</p>
</div>
<div class="footer">
Links: <a href="http://www.google.com/">Google</a>
</div>
$("a#changeme").attr('href',
'http://maps.google.com/');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-18 15:04:11
mimo że OP wyraźnie poprosił o odpowiedź jQuery, nie musisz używać jQuery do wszystkiego w dzisiejszych czasach.
Kilka metod bez jQuery:
-
Jeśli chcesz zmienić wartość
href
wszystkie<a>
elementy, zaznacz je wszystkie, a następnie wykonaj iterację za pomocą nodelist : (przykład)var anchors = document.querySelectorAll('a'); Array.prototype.forEach.call(anchors, function (element, index) { element.href = "http://stackoverflow.com"; });
-
Jeśli chcesz zmienić
href
wartość wszystkich<a>
elementów, które faktycznie wybierz atrybuthref
, dodając selektor atrybutów[href]
(a[href]
): ( przykład)var anchors = document.querySelectorAll('a[href]'); Array.prototype.forEach.call(anchors, function (element, index) { element.href = "http://stackoverflow.com"; });
-
Jeśli chcesz zmienić wartość
href
elementów<a>
, które zawierają określoną wartość, na przykładgoogle.com
, użyj selektora atrybutówa[href*="google.com"]
: (przykład)var anchors = document.querySelectorAll('a[href*="google.com"]'); Array.prototype.forEach.call(anchors, function (element, index) { element.href = "http://stackoverflow.com"; });
Podobnie, możesz również użyć innych selektorów atrybutów . Na przykład:
a[href$=".png"]
może być używany do wybierz<a>
elementy, których wartośćhref
Kończy się na.png
.a[href^="https://"]
może być używany do wybierania elementów<a>
z wartościamihref
, które są prefiksem zhttps://
.
-
Jeśli chcesz zmienić wartość
href
elementów spełniających wiele warunków: (przykład)var anchors = document.querySelectorAll('a[href^="https://"], a[href$=".png"]'); Array.prototype.forEach.call(anchors, function (element, index) { element.href = "http://stackoverflow.com"; });
..nie ma potrzeby stosowania regex, w większości przypadków .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-19 00:51:29
Prosty sposób to:
Funkcja Attr (od wersji jQuery 1.0)
$("a").attr("href", "https://stackoverflow.com/")
Lub
Funkcja Prop (od wersji jQuery 1.6)
$("a").prop("href", "https://stackoverflow.com/")
Zaletą powyższego sposobu jest to, że jeśli selektor wybierze pojedynczą kotwicę, zaktualizuje tylko tę kotwicę, a jeśli selektor zwróci grupę kotwicy, zaktualizuje określoną grupę za pomocą tylko jednej instrukcji.
Teraz, jest wiele sposobów, aby zidentyfikować dokładne kotwica lub grupa kotwic:
Dość Proste:
- Wybierz kotwicę poprzez nazwę tagu:
$("a")
- Wybierz kotwicę przez indeks:
$("a:eq(0)")
- Select anchor for specific classes (jak w tej klasie tylko anchory
z klasą
active
) :$("a.active")
- Wybieranie kotwic o określonym ID (tutaj w przykładzie
profileLink
ID): {]} - wybór pierwszej kotwicy href:
$("a:first")
Bardziej przydatne:
- wybór wszystkie elementy z atrybutem href:
$("[href]")
- wybór wszystkich kotwic o określonym href:
$("a[href='www.stackoverflow.com']")
- wybranie wszystkich anchorów nie posiadających określonego href:
$("a[href!='www.stackoverflow.com']")
- wybieranie wszystkich anchorów z href zawierającym konkretny URL:
$("a[href*='www.stackoverflow.com']")
- wybór wszystkich anchorów z href zaczynających się od określonego adresu URL:
$("a[href^='www.stackoverflow.com']")
- zaznaczenie wszystkich anchorów z href zakończonym określonym adresem URL:
$("a[href$='www.stackoverflow.com']")
Teraz, jeśli chcesz zmienić określone adresy URL, możesz to zrobić as:
Na przykład, jeśli chcesz dodać stronę proxy dla wszystkich adresów URL google.com, można go zaimplementować w następujący sposób:
$("a[href^='http://www.google.com']")
.each(function()
{
this.href = this.href.replace(/http:\/\/www.google.com\//gi, function (x) {
return "http://proxywebsite.com/?query="+encodeURIComponent(x);
});
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-30 04:51:53
Ten fragment wywołuje po kliknięciu linku klasy "menu_link" i pokazuje tekst i adres URL linku. Return false zapobiega śledzeniu łącza.
<a rel='1' class="menu_link" href="option1.html">Option 1</a>
<a rel='2' class="menu_link" href="option2.html">Option 2</a>
$('.menu_link').live('click', function() {
var thelink = $(this);
alert ( thelink.html() );
alert ( thelink.attr('href') );
alert ( thelink.attr('rel') );
return false;
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-10 09:17:24
Przestań używać jQuery tylko dla tego powodu! To jest tak proste tylko z JavaScript.
document.querySelector('#the-link').setAttribute('href', 'http://google.com');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-03 20:44:52
$("a[href^='http://stackoverflow.com']")
.each(function()
{
this.href = this.href.replace(/^http:\/\/beta\.stackoverflow\.com/,
"http://stackoverflow.com");
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-13 11:40:28
href
w atrybutie, więc można go zmienić za pomocą czystego JavaScript, ale jeśli masz już jQuery wstrzykiwany na swojej stronie, nie martw się, pokażę to w obie strony:
Wyobraź sobie, że masz to href
poniżej:
<a id="ali" alt="Ali" href="http://dezfoolian.com.au">Alireza Dezfoolian</a>
I lubisz zmieniać link...
Używając czystego JavaScript BEZ ŻADNEJ biblioteki, którą możesz zrobić:
document.getElementById("ali").setAttribute("href", "https://stackoverflow.com");
Ale także w jQuery możesz zrobić:
$("#ali").attr("href", "https://stackoverflow.com");
Lub
$("#ali").prop("href", "https://stackoverflow.com");
W tym przypadku, jeśli masz już wstrzykiwany jQuery, prawdopodobnie jQuery jeden wygląd krótszy i bardziej cross-browser...ale poza tym wybieram JS
jeden...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-19 04:44:26
Zmień HREF obrazu logo WordPress Avada theme
Jeśli zainstalujesz ShortCode Exec PHP plugin, możesz utworzyć ten Shortcode, który nazwałem myjavascript
?><script type="text/javascript">
jQuery(document).ready(function() {
jQuery("div.fusion-logo a").attr("href","tel:303-985-9850");
});
</script>
Możesz teraz przejść do Wygląd/widżety i wybrać jeden z obszarów widżetu stopki i użyć widżetu tekstowego, aby dodać następujący Skrót
[myjavascript]
Selektor może się zmieniać w zależności od tego, jakiego obrazu używasz i czy jest gotowy do siatkówki, ale zawsze możesz to rozgryźć za pomocą narzędzi programistycznych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-24 18:20:15
Try
link.href = 'https://...'
link.href = 'https://stackoverflow.com'
<a id="link" href="#">Click me</a>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-21 19:00:53