jQuery链接重定向
Posted
技术标签:
【中文标题】jQuery链接重定向【英文标题】:Jquery link redirect 【发布时间】:2011-08-24 23:39:47 【问题描述】:我正在写一个asp.net c# webforms 网站
我正在尝试编写一些 jquery 来实现以下目标:
点击以下链接时
<a title="Relevance" href="www.url.com/search/1/3/5/1/4/0">my link</a>
我希望有一些 jquery 接受 href 并在这种情况下替换最后一个数字 0 尽管我们可以将 0 更改为任何可替换的字符串,这使得它更容易。一旦完成,我们希望将用户重定向到新的 URL。
这在 jquery 中很容易实现吗?任何人都可以指出我的教程方向以实现类似的目标吗?
【问题讨论】:
【参考方案1】:是的,你可以这样做(不检查准确性,但算法应该是合理的):
$('#myLink').click(function()
var currentUrl = this.href;
var items = currentUrl.split('/');
items[items.length - 1] = 'myNewValue';
window.location.href = items.join('/');
);
实际上,用斜杠分割,然后替换最后一个元素,将字符串重新连接在一起,并将窗口的 href 设置为新位置。
【讨论】:
我有大致相同的东西,但我正在删除并 +1 以在最后对重定向进行很好的接触!【参考方案2】:如果可以将尾随的 0 更改为任何可替换的字符串,是否也可以将其更改为 String.Empty
?那样的话,您可以只在 URL 上附加一个值,而不是某种搜索和替换,这要简单得多。
所以你会开始:
<a class="search-link" title="Relevance" href="www.url.com/search/1/3/5/1/4/">my link</a>
有点像 Tejs 所说的,但更简单:
$('a.search-link').click(function()
var currentUrl = this.href;
currentUrl += 'myNewValue';
window.location.href = currentUrl;
);
【讨论】:
这是可能的,并且会让生活变得非常轻松,我猜这个问题就像 javascript 被禁用一样没有默认的想法,我可以在页面加载时默认它。跨度> 如果这对将来的任何人都有帮助,我还发现除了上面的代码之外,我还需要在方法中使用默认操作。【参考方案3】:您总是可以这样做:http://jsfiddle.net/9Kvfh/
$(function()
$('.replaceLastNumber').each(function()
$(this).click(function(ev)
ev.preventDefault();
var ahref = $(this).attr('href');
var Length = ahref.length;
if (ahref.slice(Length - 1, Length) == '/') //Remove trailing slash
ahref = ahref.slice(0, Length - 2);
else
ahref = ahref.slice(0, Length - 1);
ahref += "SomeNewValue";
window.location.href = ahref;
);
);
);
我觉得用不同的方式可以做得更好(这个系统有很多故障点,从你改变你的 php 代码到他们关闭 js)。
【讨论】:
【参考方案4】:一个相当简单的方法是找到最后的斜线,修剪它的值并用你想要的替换它:
html:
<a title="Relevance" id="link1" href="http://www.url.com/search/1/3/5/1/4/0">my link</a>
jQuery:
$('#link1').click(function()
// get the url
var url = this.href;
// get the length of the final slash value
var finalSlashLength = url.substring(url.lastIndexOf('/') + 1).length;
// trim the final value off
var newUrl = url.substring(0, url.length - finalSlashLength);
// add the new value
newUrl += 'some new value';
// redirect to the new URL
window.location.href = newUrl;
);
工作样本:
http://jsfiddle.net/QRpYC/2/
编辑:
由于您在 cmets 中提到标记是动态生成的 - 您可以根据其他选项轻松找到链接。我要寻找的第一件事是它们是否位于一个通用容器中,例如 div 等?查找具有名称、类或 ID 属性的父级并将其用作选择器。
例如,如果标记是这样的:
<div id="searchLinks">
<a title="Relevance" href="http://www.url.com/search/1/3/5/1/4/0">my link</a>
<a title="SomeLink" href="http://www.url.com/search/1/3/5/1/4/1">my link</a>
</div>
然后您可以使用以下方法选择它们:
$('div#searchLinks > a').click(function()....);
【讨论】:
感谢以上所有帖子。我忘记提及的一件事是链接是动态生成的,因此我无法为它们分配唯一的 id,因此通过 #linkid 引用它们会给我带来问题。我也无法让所有标签都发生这种情况,因为页面上有不需要这样做的项目。我会更好地创建一个简单的 java 脚本函数并使用链接的 onClick 吗?或者是否有类似的方法来使用 jquery,因为我想尝试与使用的脚本语言保持一致 Prib,您可以为这些特殊链接使用 CSS 类吗?看看我的答案,使用“搜索链接”类的示例 我可以,看起来和我想要的完全一样,我现在就给它以上是关于jQuery链接重定向的主要内容,如果未能解决你的问题,请参考以下文章