Как вы можете изменить href для гиперссылки, используя jQuery?
Как вы можете изменить href для гиперссылки, используя jQuery?
Ответы:
С помощью
$("a").attr("href", "http://www.google.com/")
изменит ссылку на все гиперссылки, чтобы они указывали на Google. Вы, вероятно, хотите несколько более изысканный селектор, хотя. Например, если у вас есть сочетание тегов привязки источника ссылки (гиперссылка) и цели ссылки (она же «якорь»):
<a name="MyLinks"></a>
<a href="http://www.codeproject.com/">The CodeProject</a>
... Тогда вы, вероятно, не хотите случайно добавлять href
к ним атрибуты. В целях безопасности мы можем указать, что наш селектор будет сопоставлять только <a>
теги с существующим href
атрибутом:
$("a[href]") //...
Конечно, вы, вероятно, будете иметь в виду нечто более интересное. Если вы хотите сопоставить привязку с конкретным существующим href
, вы можете использовать что-то вроде этого:
$("a[href='http://www.google.com/']").attr('href', 'http://www.live.com/')
Это найдет ссылки, где href
точно соответствует строка http://www.google.com/
. Более сложная задача может соответствовать, затем обновлять только часть href
:
$("a[href^='http://stackoverflow.com']")
.each(function()
{
this.href = this.href.replace(/^http:\/\/beta\.stackoverflow\.com/,
"http://stackoverflow.com");
});
В первую часть выбирает только ссылки , где HREF начинается с http://stackoverflow.com
. Затем определяется функция, которая использует простое регулярное выражение для замены этой части URL-адреса новой. Обратите внимание на гибкость, которую это дает вам - здесь может быть сделано любое изменение ссылки.
each
- теперь будет возможно следующее:$(selector).attr('href', function() { return this.replace(/.../, '...'); });
href
: ...return this.href.replace(/.../, '...'); });
С jQuery 1.6 и выше вы должны использовать:
$("a").prop("href", "http://www.jakcms.com")
Разница между prop
и attr
заключается в том, что attr
захватывает атрибут HTML, а prop
захватывает свойство DOM.
Вы можете найти более подробную информацию в этом сообщении: .prop () vs .attr ()
prop
over attr
, для людей, которые приходят к вопросу и находят, что, по- attr
видимому, прекрасно работают в новых версиях jQuery ...
prop
быстрее, чем attr
потому, что оно обновляет dom, а не модифицирует HTML. jsfiddle.net/je4G5
Используйте attr
метод в вашем поиске. Вы можете отключить любой атрибут с новым значением.
$("a.mylink").attr("href", "http://cupcream.com");
В зависимости от того, хотите ли вы поменять все идентичные ссылки на что-то еще, или вы хотите контролировать только те, которые находятся в данном разделе страницы, или каждую по отдельности, вы можете сделать одну из них.
Измените все ссылки на Google, чтобы они указывали на Карты Google:
<a href="http://www.google.com">
$("a[href='http://www.google.com/']").attr('href',
'http://maps.google.com/');
Чтобы изменить ссылки в данном разделе, добавьте класс контейнера div в селектор. Этот пример изменит ссылку Google в содержании, но не в нижнем колонтитуле:
<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/');
Чтобы изменить отдельные ссылки независимо от того, где они находятся в документе, добавьте идентификатор в ссылку, а затем добавьте этот идентификатор в селектор. В этом примере будет изменена вторая ссылка Google в контенте, но не первая или та, что в нижнем колонтитуле:
<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/');
Несмотря на то, что OP явно запрашивает ответ jQuery, вам не нужно использовать jQuery для всего в наши дни.
Если вы хотите изменить href
значение всех <a>
элементов, выберите их все, а затем выполните итерацию по нодлисту : (пример)
var anchors = document.querySelectorAll('a');
Array.prototype.forEach.call(anchors, function (element, index) {
element.href = "http://stackoverflow.com";
});
Если вы хотите изменить href
значение всех <a>
элементов, которые действительно имеют href
атрибут, выберите их, добавив [href]
атрибут селектора ( a[href]
): (пример)
var anchors = document.querySelectorAll('a[href]');
Array.prototype.forEach.call(anchors, function (element, index) {
element.href = "http://stackoverflow.com";
});
Если вы хотите изменить href
значение <a>
элементов, которые содержат определенное значение, например google.com
, используйте селектор атрибута a[href*="google.com"]
: (пример)
var anchors = document.querySelectorAll('a[href*="google.com"]');
Array.prototype.forEach.call(anchors, function (element, index) {
element.href = "http://stackoverflow.com";
});
Кроме того, вы также можете использовать другие селекторы атрибутов . Например:
a[href$=".png"]
может использоваться для выбора <a>
элементов, href
значение которых заканчивается на .png
.
a[href^="https://"]
может быть использован для выбора <a>
элементов с href
значениями, которые префиксом с https://
.
Если вы хотите изменить href
значение <a>
элементов, которые удовлетворяют нескольким условиям: (пример)
var anchors = document.querySelectorAll('a[href^="https://"], a[href$=".png"]');
Array.prototype.forEach.call(anchors, function (element, index) {
element.href = "http://stackoverflow.com";
});
..не нужно регулярное выражение, в большинстве случаев.
Этот фрагмент кода вызывается при нажатии на ссылку класса «menu_link» и показывает текст и URL-адрес ссылки. Возврат false предотвращает переход по ссылке.
<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;
});
Простой способ сделать это:
Функция Attr (с версии jQuery 1.0)
$("a").attr("href", "https://stackoverflow.com/")
или
Функция поддержки (начиная с версии 1.6 JQuery)
$("a").prop("href", "https://stackoverflow.com/")
Кроме того, преимущество описанного выше способа заключается в том, что если селектор выбирает одну привязку, он обновляет только эту привязку, а если селектор возвращает группу привязки, он обновляет конкретную группу только с помощью одного оператора.
В настоящее время существует множество способов идентифицировать точный якорь или группу якорей:
Довольно простые:
$("a")
$("a:eq(0)")
active
):$("a.active")
profileLink
идентификатора):$("a#proileLink")
$("a:first")
Более полезные из них:
$("[href]")
$("a[href='www.stackoverflow.com']")
$("a[href!='www.stackoverflow.com']")
$("a[href*='www.stackoverflow.com']")
$("a[href^='www.stackoverflow.com']")
$("a[href$='www.stackoverflow.com']")
Теперь, если вы хотите изменить определенные URL-адреса, вы можете сделать это следующим образом:
Например, если вы хотите добавить прокси-сайт для всех URL-адресов, идущих на google.com, вы можете сделать это следующим образом:
$("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);
});
});
Прекратите использовать jQuery только ради этого! Это так просто только с JavaScript.
document.querySelector('#the-link').setAttribute('href', 'http://google.com');
Если вы установите плагин ShortCode Exec PHP, вы можете создать этот шорткод, который я назвал myjavascript
?><script type="text/javascript">
jQuery(document).ready(function() {
jQuery("div.fusion-logo a").attr("href","tel:303-985-9850");
});
</script>
Теперь вы можете перейти к Appearance / Widgets и выбрать одну из областей виджета нижнего колонтитула и использовать текстовый виджет, чтобы добавить следующий шорткод
[myjavascript]
Селектор может меняться в зависимости от того, какое изображение вы используете, и готов ли он к сетчатке, но вы всегда можете выяснить это с помощью инструментов разработчика.
href
в атрибуте, так что вы можете изменить его, используя чистый JavaScript, но если у вас уже есть jQuery на вашей странице, не волнуйтесь, я покажу это в обоих направлениях:
Представьте, что у вас есть это href
ниже:
<a id="ali" alt="Ali" href="http://dezfoolian.com.au">Alireza Dezfoolian</a>
И вы хотели бы изменить его ссылку ...
Используя чистый JavaScript без какой-либо библиотеки, вы можете сделать:
document.getElementById("ali").setAttribute("href", "https://stackoverflow.com");
Но также в jQuery вы можете сделать:
$("#ali").attr("href", "https://stackoverflow.com");
или
$("#ali").prop("href", "https://stackoverflow.com");
В этом случае, если вы уже внедрили jQuery, вероятно, jQuery один выглядит короче и более кроссбраузерен ... но кроме этого я иду с JS
одним ...