我需要使用jQuery mobile设置相对于当前页面url的按钮的href值。
所以我天真地写了下面的代码:
var path = window.location;
path = path.replace( "shop","edit" );
$("#btnEdit").setAttr( "href", path );
页面的网址是 http:// mysite / shop / 1 ,按钮的href应设置为 http:// mysite / edit / 1
当我的'pageinit'处理程序顶部插入此代码时,我会看到浏览器位置栏中的网址(firefox& chrome)更改为 http:// mysite / shop / shop 并且页面显然已重新加载,因此我收到404错误,因为它必须在/ shop /之后有一个数字,并且它应该具有值1.
即使我发表评论,重新启动网络服务器,浏览器也会自动用 http:// mysite / shop / shop替换 http:// mysite / shop / 1 在其网址位置字段中。 ?!
我必须评论这些说明,重新启动服务器以及任何可以避免更换网址的内容。
发生了什么事? 如何在没有这种令人讨厌的副作用的情况下获取页面位置网址并设置我的按钮href值?
修改1:
编辑2:
解决方案:
在html文件中,我使用默认的href值定义了这个按钮,并没有什么特别之处:
<a href="#" data-role="button" data-icon="pencil" id="btnEdit"> Edit </a>
在脚本文件中,更准确地说是在$(document).on('pageinit',...)的处理程序中,我现在有了这个代码来设置href值但是还添加了rel =“external”属性到按钮。
var path = window.location.href;
path = path.replace( "shop","edit" );
$("#btnEdit").attr( "href", path ).attr( "rel", "external" );
没有更多的页面自动重新加载,并且已经删除了负载的奇怪行为。这是因为&lt; a&gt;的默认行为了。 jQuery Mobile中的标记是使用ajax加载目标页面而不是正常的整页加载。属性rel =“external”禁用此行为,然后正常完全加载引用的页面。 jQM文档here中描述了此行为。
注意:尽管许多答案都有助于我帮助我解决这个问题,但我检查了Mad Man Moon的答案,因为他非常乐于助人并且积分较少。如果有可能检查多个答案我会做的。
答案 0 :(得分:2)
使用attr
代替setAttr
(除非您没有使用自定义功能或某些框架/库)
$("#btnEdit").attr( "href", path );
对于自动更改的网址,请查看您是否在.htaccess
文件中放置了网址重写,或者是否正在更改其他文件中的网址的代码。
答案 1 :(得分:2)
即使我评论它,请重新启动网络服务器和浏览器 自动替换〜/ shop / 1 〜/在其网址位置的商店/商店。 ?!
我必须评论这些说明,重启服务器等等 避免这个网址更换。
答案 2 :(得分:1)
试试这个
var path = window.location;
path = path.replace( "shop","edit" );
$("#btnEdit").prop( "href", path );
答案 3 :(得分:1)
您的问题是path
充当window.location
的别名,因此path.replace()
为window.location.replace()
,会触发重定向。
解决方案:在.toString()
的末尾添加window.location
以获取字符串值而不是对象。 var path = window.location.toString()