#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 и установить для элемента расширение файла,
Честно говоря, не уверен.
Существует также более простой способ сделать это без какого-либо 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('.')));
});