Какой более чистый способ добавить что-либо к URL-адресу ссылки?
Пока у меня есть этот код, который не работает:
$('.passName').click(function(){
var schoolName = "18734";
var link = $(this).attr('href');
var newLink = link + schoolName;
$(this).attr('href') = newLink;
});
4 ответа
Существует проблема с вашим подходом: вы добавляете 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)