假设我有一个这样的锚:
<a onClick="return confirm('Sure?')" href="http://stackoverflow.com/">Click here</a>
当我点击“点击这里”时,我是否可以获得href“http://stackoverflow.com/”的价值?请记住,我没有其他属性可以提供帮助,例如id或name!
我正在覆盖确认功能,我需要将用户重定向到锚点中提供的位置,如果他们点击确定如下:
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;
}
非常感谢任何帮助!
答案 0 :(得分:3)
要重定向用户,请使用:
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');
}
});
您的确认函数声明中的this
也不会引用<a>
元素。你可能想要使用类似的东西:
<a onclick="return confirm(this, 'Sure?')" href="...">...</a>
// script.js
function confirm(e, msg) {
var targetUrl = $(e).href('attr');
// ...
}