如何使用jQuery在单击时获取锚href值?
假设我有一个这样的锚:如何使用jQuery在单击时获取锚href值?,jquery,Jquery,假设我有一个这样的锚: <a onClick="return confirm('Sure?')" href="http://stackoverflow.com/">Click here</a> 我是否可以获取href的值?”http://stackoverflow.com/当我点击“点击这里”时?请记住,我没有其他属性可以帮助,例如id或名称 我正在覆盖确认功能,如果用户单击确定,我需要将用户重定向到锚中提供的位置,如下所示: window.confirm = fu
<a onClick="return confirm('Sure?')" href="http://stackoverflow.com/">Click here</a>
我是否可以获取href的值?”http://stackoverflow.com/当我点击“点击这里”时?请记住,我没有其他属性可以帮助,例如id或名称
我正在覆盖确认功能,如果用户单击确定,我需要将用户重定向到锚中提供的位置,如下所示:
window.confirm = function(msg) {
var targetUrl = jQuery(this).attr("href");
jQuery("#alert_box").dialog({
autoOpen: false,
show: "slide",
modal: true,
width: 400,
resizable:false,
title: '<img src="icons/confirm.png" /> Confirm!',
buttons: { "Cancel": function() {
jQuery(this).dialog("close");
},
"OK": function() {
//jQuery(this).dialog("close");
jQuery(location).attr('href', targetUrl);
}
}
});
jQuery("#alert_box").html(msg);
jQuery("#alert_box").dialog("open");
return false;
}
window.confirm=函数(msg){
var targetUrl=jQuery(this.attr(“href”);
jQuery(“警报框”)。对话框({
自动打开:错误,
放映:“幻灯片”,
莫代尔:是的,
宽度:400,
可调整大小:false,
标题:“确认!”,
按钮:{“取消”:函数(){
jQuery(this.dialog)(“close”);
},
“OK”:函数(){
//jQuery(this.dialog)(“close”);
jQuery(location).attr('href',targetUrl);
}
}
});
jQuery(“#警报框”).html(msg);
jQuery(“警报框”)。对话框(“打开”);
返回false;
}
任何帮助都将不胜感激 要重定向用户,请使用:
window.location.href = targetUrl;
而不是:
jQuery(location).attr('href', targetUrl);
此外,删除内联JavaScript也是一个好主意,例如:
<a class="confirm" href="http://www.example.com">..</a>
// script.js
$('a.confirm').click(function(e) {
e.preventDefault();
if (confirm('Are you sure?')) {
window.location.href = $(this).attr('href');
}
});
仅供参考,如果您将代码包装在
(函数($){…})(jQuery)中
您可以每次使用$
而不是编写jQuery
,即使您使用$.noConflict()
来还原全局$
变量。替换窗口。confirm()
不是一个好主意。原始函数不是异步的,即如果(确认(…),您可以执行——但是,在替换函数中不可能执行相同的操作。虽然monkeypatching有时是好的,但如果monkeypatching在不知道函数已被替换的情况下破坏了代码,则是不好的。感谢Tarkus和ThiefMaster的回复。首先,我想说的是,我很清楚,使用内联javascript不是一个好习惯,覆盖confirm也不是一个好主意,正如上面提到的ThiefMaster。然而,我刚刚承担了一个大项目,几乎有数千个文件,这使得它不可能通过每个人,并改变它的方式应该是!其次,在我上面给出的示例中,“targetUrl”返回为空白,这意味着jQuery(this.attr(“href”);这不管用!知道为什么吗??!怎么样:在确认函数中再添加一个参数。我很乐意,但在这么短的时间内,没有机会浏览所有文件并添加“this”。如果我能够,我会添加一个“class”或“id”属性,这将使生活变得更加轻松,但我认为有一个短期的解决方法,我现在可以侥幸逃脱:-(无论如何,我非常感谢你们的时间、贡献和建议。
<a onclick="return confirm(this, 'Sure?')" href="...">...</a>
// script.js
function confirm(e, msg) {
var targetUrl = $(e).href('attr');
// ...
}