如何使用jQuery 1.4.4获取window.location.href的选择器

时间:2012-05-04 15:27:51

标签: jquery dom struts2 onbeforeunload

我们有一个js函数,可以使用Struts2将用户从下拉列表重定向到新页面。这是代码。

启动所有内容的Struts2下拉列表:

<s:select name="selectName" list="List" listKey="nameCode" headerKey='-1'
listValue="description" headerValue="Please select..."  value="namedValue" onchange="redirectNextPage(this.value)" />

下面是重定向功能:

function redirectNextPage(id){
   var page = "<s:url action='<path>.action'/>?<param>="; 
   window.location.href=(page + id); 

 }

我需要使用选择器来捕获window.location.href并将其绑定到我的UnBindWindow函数。

//Bind Links we dont want to affect
$('a[href^="http://"]').bind('focus', UnBindWindow); //Code not working?

//UnBind Function
    function UnBindWindow(){
        $(window).unbind('beforeunload', ReturnMessage);
    }
...

我错误地认为焦点将是我需要的正确DOM事件类型。会发生什么是select转到javascript函数然后onbeforeunload事件触发而不调用我的jQuery代码。

如何将事件正确绑定到window.location.href,以便我可以阻止beforeunload对话框触发select下拉列表,但仍然可以用于jsp页面上的其他元素?

1 个答案:

答案 0 :(得分:0)

经过调试后,我意识到Struts2标签正在捕获事件,并且它没有为jQuery拦截而冒泡。

我从未打过这段代码:

$('select').change(function() {
          alert('This worked!');
    });

然而,现在知道这个问题,我将unbind直接放入redirectNextPage函数,它按预期工作。

    $(window).unbind('beforeunload', ReturnMessage);
    window.location.href=(page + id);

我希望这有助于其他人。