jquery удаляет часть href, которая является динамической

#jquery

#jquery

Вопрос:

В этом href:

 <a href="/Lists/ListeActualitesCarrousel/4_.000/DispForm.aspx?ID=4" class="">Lire l'article</a>
  

Эта часть /ListeActualitesCarrousel/4_.000/ является динамической и может меняться, я хотел бы ее удалить. Таким образом, URL-адрес станет:

 <a href="/Lists/ListeActualitesCarrousel/DispForm.aspx?ID=4" class="">Lire l'article</a>
  

Как это можно сделать?

Комментарии:

1. Насколько динамичным может быть 4_.000 /? это всегда число или это последний путь к папке, который вы хотите удалить в href?

2. Какие компоненты в 4_.000/ всегда присутствуют? (постоянная длина? _ и . всегда ли есть?)

3. да, _ и . всегда есть

4. Можете ли вы более конкретно указать, как вы идентифицируете динамическую часть? Всегда ли это то, что находится между последним и предпоследним «/», или начало всегда начинается с «/Lists/ListeActualitesCarrousel /», или …? Кроме того, есть ли причина, по которой вы хотите использовать jQuery специально, когда вам нужно всего несколько строк простого JavaScript?

5. javascript или jQuery эта часть всегда является числом, это может быть 4_.000 3_.000, 14_.000, 40_.000 и т.д…

Ответ №1:

Попробуйте:

 $('a').attr('href',$('a').attr('href').replace(//(d)_.(d{3})//,'/'));
  

Для нескольких href : —

 $('a').each(function(){
        $(this).attr('href',$(this).attr('href').replace(//(d)_.(d{3})//,'/'));
})
  

Комментарии:

1. это будет проблемой, если имеется более 1 a-элемента, потому что вы дадите первый href всем вашим a-элементам, например: jsfiddle.net/voigtan/QfeVu

2. согласен … это общий оператор. Будет работать нормально, если у вас есть идентификатор или выберите точный элемент. Я поместил пример с ID, и XGreen пересмотрел его, чтобы он был общим.

3. у меня действительно есть более 1 элемента для замены, я пробовал это, но это не работает! jQuery(«.action»).each(function () { jQuery(‘a’).attr(‘href’,jQuery(‘a’).attr(‘href’).replace(//(d)_.(d{3})//,’/’)); }); });

4. хороший момент, у меня есть более 1 элемента, я пробовал это, но это не работает <a href=»/Lists/ListeActualitesCarrousel/4_.000/DispForm.aspx?ID=4″ class=»action»>Lire l’article</a> jQuery(«.action»).each(function () { jQuery(‘a’).attr(‘href’,jQuery(‘a’).attr(‘href’).replace(//(d)_.(d{3})//,’/’)); }); }); КАКИЕ-ЛИБО ПОДСКАЗКИ?

5. Добавлена обработка для нескольких href. Просто повторите цикл над ним.

Ответ №2:

 $("a").each(function() {
    var pattern = /d _.d //im,
        href = this.href;
    if(pattern.test(href)) {
        this.href = href.replace(pattern ,"");
    }
});
  

Я предполагаю, что на данный момент это может быть что угодно 11_.123144/ , как динамическое значение.

Ответ №3:

$(‘a’).attr(‘href’,function(i,h){ возвращает h.replace(/(ListeActualitesCarrousel/)(.?)/(D.)/,»$1$3″); });

ДЕМОНСТРАЦИЯ:

http://jsfiddle.net/LzMse/