2013-05-26 2 views
1

Я хочу отключить ссылку a из обновления страницы (т. Е. Перейти к ссылке href). Но я хочу, чтобы URL-адрес был изменен в соответствии с значением href.Отключить свойство href с помощью jquery

В настоящее время я пытаюсь это

$('.advertPP').click(function() { 
    event.preventDefault(); 
    location.href = link.attr("href"); 
}); 

HTML Ссылка

<a href="products?id=<?php echo $item_id; ?>" class="advertPP">Link</a> 

Поскольку оба находятся на одной и той же странице, так что я не хочу, чтобы страница будет обновляться, но я хочу, чтобы URL для изменения, как в значении href.

+4

Итак, вы хотите заменить поведение связи с поведением ссылки? – Oded

+0

Да, я хочу изменить URL-адрес без обновления –

+0

Установка 'location.href' приведет к перезагрузке страницы. – Oded

ответ

1

Ваш код завершен (логический).

$('.advertPP').click(function(event) { 
    event.preventDefault(); 
    location.href = this.href; //or $(this).attr("href"), is the same thing, jQuery is not needed in this case 
}); 

Может быть, вы хотите, чтобы ваша страница изменить содержание без освежать, так что вам нужно AJAX, вот пример:

$('.advertPP').click(function(event) { 
    event.preventDefault(); 
    $.ajax({ 
     url: this.href, 
     success: function(data) { 
      //if the loaded page is a full html page, replace the HTML with the data you requested 
      $("body").html(data); //make sure your data has only body contents, either you can replace the full HTML even if it is a bad practice $("html").html(data); 
     } 
    }); 
}); 
+0

, что shuld я заменил данными, не понял? –

+0

Это зависит от того, что возвращается из запроса ajax. Если это полная HTML-страница, в том числе '' и '' теги, вы можете использовать '$ (" html ") .html (data)' вместо '$ (" body "). Html (data)', even если это не хорошая практика –

+0

ваш код работает, единственная проблема в том, что идентификатор, который мне нужен, возвращается после двух кликов, что означает, что идентификатор обновляется, когда я дважды нажимаю, иначе он показывает предыдущий –

1

Я заметил, что вы не проходите мимо event объекта к вашей функции. Вы должны передать объект, как это:

$('.advertPP').click(function(event) { 
          //^^^^^ pass the event object 
    event.preventDefault(); 
    $(this).attr("href", "http://..."); 
}); 
+0

$ ("link") укажет на что? Может быть, вы хотели написать $ (this);) –

+0

Да, это моя ошибка. Спасибо за то, что принесли это – Tifa

+0

Умм, я действительно не понимаю ваш код, даже если он теперь правильный. '$ (this) .attr (" href "," ... ");' будет только изменять атрибут ссылки, он не изменит/перезагрузит страницу –

1

Проверьте document.URL и $ (это) .attr («HREF») такой же, а затем установить новый URL и возвращать ложь. Если они разные, перенаправление на страницу.

$('a').click(function() { 
    var currentUrl = document.URL 
    if ($(this).attr('href') == currentUrl) { 
     $(this).attr('href', 'http://www.google.com'); 
     return false; 
    } 
}) 
Смежные вопросы