无法使用jquery地址在IE中设置正确的href链接

时间:2011-09-02 15:13:57

标签: jquery internet-explorer jquery-address

使用jquery地址我正在设置我的href链接:

<a href="#view_profile=123">view 123</a>

调用我的地址更改事件时:

$.address.change(function(e) {
   alert(e.value);
});

我看到FF和Chrome的价值正如我所料:

/view_profile=123
然而,

IE会返回带有前面“/”的完整URL路径,如下所示:

/http://localhost/#view_profile=123

知道为什么IE会这样做以及解决它的最佳方法是什么?我尝试了几件事,但每次都是这样。

以下是我用来获取链接路径的代码:

// Setup jQuery address on some elements
$('a').address();

// Run some code on initial load
$.address.init(function(e) {
  // Address details can be found in the event object
});

// Handle any URL change events
$.address.change(function(e) {
    alert(e.value);

    var urlAux = e.value.split('=');
    var page   = urlAux[0];
    var arg  = urlAux[1];

    alert("page: " + page);
    alert("arg: " + arg);

    if (page == "/view_profile") {
        ...
    }
});

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方法。如果我向链接添加一个类标记并在类上查找click事件,我可以设置URL并正确触发jquery地址更改事件。

$(".testclass").click(function() {

    var id = null;
    if ($.browser.msie) {    
        id = $(this).attr('href').slice($(this).attr('href').indexOf('#')+1);
    } 
    else {    
        id = $(this).attr('href').substr(1);
    }

    alert("ID: " + id );

    location.href = "#view_profile=" + id; 
    return false;
});

我还必须将href值设置为ID,如下所示:

<a href="#123" class="testclass">123</a>

答案 1 :(得分:0)

尝试使用$(this).prop(“href”)来获取网址。它应该在所有浏览器中获得相同的值。

编辑:路径名在IE中不起作用。

猜猜我应该做更多的测试。 pathname在IE中不起作用。只需使用“href”