1

我想禁止a链接刷新页面(即转到 href 链接)。但我想根据href值修改 url。

目前,我正在尝试这个

$('.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

3 回答 3

1

我注意到您没有将event对象传递给您的函数。您应该像这样传递对象:

$('.advertPP').click(function(event) {
                            //^^^^^ pass the event object
    event.preventDefault();
    $(this).attr("href", "http://...");
});
于 2013-05-26T08:05:39.687 回答
1

检查 document.URL 和 $(this).attr('href') 是否相同,然后设置新的 url 并返回 false。如果两者不同,它们将重定向到页面。

$('a').click(function() {
    var currentUrl = document.URL
    if ($(this).attr('href') == currentUrl) {
        $(this).attr('href', 'http://www.google.com');
        return false;
    }
})
于 2013-05-26T08:06:37.737 回答
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);
        }
    });
});
于 2013-05-26T08:09:07.533 回答