jquery изменяет ссылки

#jquery #hyperlink

#jquery #гиперссылка

Вопрос:

Я ищу немного кода (jquery, если возможно), который удалит любые расширения файлов из ссылок. Например

 directory/page.html to directory/page
directory2/page2.cfm to directory2/page2
 

Возможно ли это?

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

1. если вы хотите иметь чистый URL, возможно, по соображениям SEO, лучше использовать .htaccess для перезаписи URL. Это используется apache. Проверьте этот инструмент generateit.net/mod-rewrite

Ответ №1:

jQuery может только выбирать элементы для вас, но не обрабатывать строки. Простая обработка строк сделает это:

 $('a').attr('href', function(i, value) {
    return value.substring(0, value.lastIndexOf('.'));
});
 

lastIndexOf поддерживается только в IE9, поэтому, возможно, вам придется использовать регулярное выражение:

 return value.replace(/.. $/, '');
 

Обновление: что касается вашего комментария, это еще проще, просто используйте

  return value.replace(/.cfm$/, '');
 

Вы также можете ограничить набор ссылок, выбрав только те, которые на самом деле заканчиваются .cfm :

 $('a[href$=".cfm"]')
 

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

1. Простое удаление всего после последнего ‘.’ потенциально приведет к разрыву множества ссылок, которые он не хочет изменять. Что-то вроде http://www.test.com/ стало бы http://www.test

2. @Anthony: Верно … существуют различные решения этой проблемы. Проще всего было бы, если бы все эти ссылки имели общий класс. Если бы OP предоставил больше информации, ответ был бы лучше 😉

3. привет, ребята, в идеальном мире я хотел бы удалить все расширения файлов .cfm из всех ссылок на странице. Возможно ли это?

4. Это потрясающе. Решены все мои проблемы. Спасибо

Ответ №2:

Я не совсем уверен, сработает ли это, но вы можете попробовать использовать .remove и установить для элемента расширение файла,

http://api.jquery.com/remove/

Честно говоря, не уверен.

Существует также более простой способ сделать это без какого-либо jQuery, однако, что вы могли бы сделать, это назвать все файлы index.extension и поместить их в соответствующие папки из корня, например

new.html будет переименован в index.html затем помещается в каталог с именем news, а затем, когда кто-то наберет www.yourdomain.com/news / это напрямую откроет нужную страницу, возможно, немного проще, чем jQuery.

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

1. remove удаляет элементы из DOM. Он не делает ничего даже близко к удалению части строки.

Ответ №3:

 $('a[href]').each(function(){
    $(this).attr('href',$(this).attr('href').substring(0, value.lastIndexOf('.')));
});