2016-05-05 19 views
0

У меня есть переменная с именем a (var a = "test") и мне нужно поставить его во всех атрибутов всех a элементов href на странице, которые содержат слово ONE. Все href значения не совпадают, но всегда содержит слово ONEОбновить все HREF атрибуты

Например, я хочу, чтобы изменить это:

href="/page2.php?how=GO-ONE-24-title-stay" 

Для этого:

href="/page2.php?how=GO-ONE-test-24-title-stay" 
+1

поэтому в чем вопрос? – guradio

+0

Вопрос в том, как я могу найти все href, содержащее это слово, и поставить эту переменную там :) –

+0

Вы хотите поместить * word * 'test' в URL-адрес или * значение * переменной test в URL? Ваш второй пример не ясен, поскольку он противоречит тому, что вы говорите выше. –

ответ

2

Что-то вроде этого?

$('a[href*="ONE"]').each(function(){ 
    $(this).attr('href', $(this).attr('href').replace('ONE', 'ONE-test')); 
}); 

Ваш пример немного вводит в заблуждение, так что если вы имеете в виду, что тестовое значение является переменной, то вам нужно будет что-то вроде этого:

var add = 'test'; 

$('a[href*="ONE"]').each(function(){ 
    var currentHref = $(this).attr('href'); 
    $(this).attr('href', currentHref.replace('ONE', 'ONE-' + add)); 
}); 
+1

Я бы добавил, что вы можете изменить свой селектор на '$ ('a [href * =" ONE "]')'. – BenG

1

Попробуйте это ..

$(document).ready(function(){ 
var test = "test"; 
$("a").each(function() { 
    var href_val = $(this).prop("href"); 
    if(href_val.indexOf("ONE") >= 0){ 
    href_val = href_val.replace("ONE", "ONE-"+test); 
    $(this).prop("href", href_val); 
    } 
}); 
}); 
2

Вы можете сделать что-то вроде этого:

$(document).ready(function(){ 
    var a ="test" ; 

    $('a').each(function(){ 
     this.href = this.href.replace('ONE', 'ONE-'+a); 
    }); 
}); 

Работает example.

2

Вы можете достичь этого, предоставив функцию attr(); нет необходимости в явном цикле. Попробуйте это:

var a = 'test'; 
$('a[href*="-ONE-"]').attr('href', function(i, href) { 
    return href.replace('-ONE-', '-ONE-' + a + '-'; 
}); 

Обратите внимание, что начальный селектор JQuery ограничивает элементы, чтобы быть изменен только те, кто содержит ONE- в пределах атрибута href.

+0

Если ей нужно это изменение в ** все ** ее 'href', то в чем смысл замены во время исполнения? Используя редактор, поддерживающий RegExp-замены, она просто могла найти 'href =" ([^ \ "] +) ONE ([^ \"] +) "' и заменить на 'href =" $ 1ONE-test $ 2 "'. Не так ли? –

+0

Вы предлагаете анализировать HTML с помощью RegEx? Потому что это действительно плохая идея. –

+0

Нет, я не предлагаю этого. Я имею в виду, если я понимаю проблему, похоже, она хочет изменить все 'href', чтобы указать какую-то тестовую среду, так зачем перегружать сайт, делающий эту замену jQuery во время выполнения? Она могла просто найти и заменить ее «href» в своем редакторе. Ей просто нужно и редактор, поддерживающий замену RegExp (например, Sublime Text) ... Или, может быть, я просто не получаю ее ... :) –