2011-09-02 20 views
0

使用jQuery地址我设置我的HREF链接,像这样:无法设置与jQuery的地址在IE中正确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") { 
     ... 
    } 
}); 
+0

什么是'e'以及它是如何与你的锚? – Phil

+0

e是我的事件对象,并保存链接的值,在这种情况下, – Paul

+1

解决方案将基于如何获取链接值。你可以发布该代码吗?发生这种情况的原因是,当您在IE中动态创建锚点标记时,无论您是否只为其提供相对路径,href属性将始终包含绝对路径。例如,看到这个jsfiddle。 http://jsfiddle.net/xKLKZ/ –

回答

1

我找到了解决办法。如果我添加一个类标记到链接并在类上寻找单击事件,我可以设置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> 
0

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

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

..猜我应该做更多的测试。路径名在IE中不起作用。只是使用“href”