在onclick处理程序中修改目标url
Modify target url in onclick handler
是否可以在onclick处理程序中修改目标URL?怎样
我不想使用像window.location = ...
这样的东西,因为它会改变浏览器的行为(点击与ctrl点击、在新选项卡中打开、在特定窗口/框架中打开等)。我想要一个干净的解决方案-只需更改url,其余的都应该像往常一样自己完成。
$(...).click(function () {
if (check_some_condition)
// modify target url here...
// do not want to do window.location= - this is not clean
// as it changes the browsers' behaviour (ctrl-click, opening in particular window/frame etc.)
return true;
});
尝试
$(function(){
$("#theLink").click(function(){
$(this).attr("href","http://tnbelt.com");
});
});
编辑:更新代码,因为首先执行事件处理程序脚本,然后执行默认操作。
添加了以下版本,向您展示您可以使用.click
,因为您没有注意到我与您共享的怪癖模式链接演示
$(document).ready (function () {
$('#changeMe'). click (function (e) {
var goLucky = Math.floor(Math.random()*12);
if (goLucky % 2 == 0) {
this.href = "http://www.google.com";
} else {
this.href = "http://www.hotmail.com";
}
});
});
评论e.preventDefault();
&$(this).click()
,因为它不是必需的。。
演示
$(document).ready (function () {
$('#changeMe').one ('click', function (e) {
//e.preventDefault();
this.href = "http://www.google.com";
//$(this).click();
});
});
让我们考虑一个隐藏的锚点标签
<a id="linkId" href="myPageToGo.html" class="thickbox" title="" style="visibility:hidden;">Link</a>
然后你可以在代码中模拟锚点点击。。。
$(...).click(function () {
if (check_some_condition)
$('#linkId').click();
return true;
});
EDIT-替代方式
将单击的元素包裹在锚点标记内。。。
$(...).click(function () {
if (check_some_condition)
$(this).wrap('<a id="new1" />');
$('#new1').click();
return true;
});
$(this).attr('href', 'http://example.com/');
许多答案,包括顶部注释,都遗漏了一个重要的问题。如果用户只是右键单击URL以在新的选项卡/窗口中打开,则此方法将不起作用,因为您直接在"href"URL指定的位置进行请求,而不是通过onclick事件。
你可以在Gorneau的帖子中提到的这个演示小提琴上尝试同样的方法。
http://jsfiddle.net/skram/PtNfD/7/
$(document).ready (function () {
$('#changeMe').one ('click', function (e) {
this.href = "http://www.google.com";
});
});
相关文章:
- 在Safari执行javascript之前对其进行修改
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 用Javascript修改内部标记的CSS规则
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- Href:当前DIV中的目标ID
- 绑定Range输入以修改样式
- 可以从Chrome扩展修改窗口对象吗
- 当使用extern和目标JavaScript时,我如何强制Haxe编译器使用require语句
- jQuery滚动器插件修改
- 将函数从onclick修改为onload
- 修改鼠标事件对象的“目标”以进行事件委派
- 如何在 JavaScript 中修改事件对象的目标属性
- 修改 .appendChild() 的目标,它会导致程序重新初始化
- 在onclick处理程序中修改目标url
- 在创建事件处理程序时,jQuery是否会修改目标元素?
- Javascript代理:修改数组目标和更新数组(长度,内容)
- 需要根据操作系统修改PDF中的链接目标
- 目标转换问题-变量修改