Какой более чистый способ добавить что-либо к URL-адресу ссылки?

Пока у меня есть этот код, который не работает:

$('.passName').click(function(){
    var schoolName = "18734";
    var link = $(this).attr('href');
    var newLink = link + schoolName;
    $(this).attr('href') = newLink;
});

4 ответа

Решение

Сделайте следующее:

$(this).attr('href', newLink);

Существует проблема с вашим подходом: вы добавляете schoolName к URL каждый раз, когда нажимаете, даже если пользователь выбирает другую вкладку.

Поэтому я бы предложил не связываться с href атрибут, но выполните действие на клике:

   $('.passName').click(function(){
            location.href = this.href + "18734";
   });

или, по крайней мере, проверьте, что вы не добавили его раньше:

   $('.passName').click(function(){
       var schoolName = "18734";
       var link = this.href;
       if (link.indexOf(schoolName, link.length - schoolName.length)!==-1) {
           this.href = link+schoolName
       }
   });

или, как предложил Феликс Клинг, просто убедитесь, что функция вызывается только один раз:

   $('.passName').one('click', function(){
       this.href += "18734"
   });

Проще говоря, сделайте так:

$('.passName').click(function() {
    $(this).attr('href', this.href+'18734');
});

На самом деле вам не нужно создавать новый объект jQuery, вы можете просто иметь:

$('.passName').click(function() {
   var schoolName = "18734";
   this.href += schoolName;
});

Библиотека как jQuery также полезна, но мы не должны забывать простой JavaScript и DOM.

Кроме того, в JS вы не можете действительно "назначить" что-то для вызова функции, как вы сделали; в JQuery способ установить значение атрибута $(this).attr('attr', newLink)

Другие вопросы по тегам