有没有办法将像confirm
这样的onclick函数的返回值放到jQuery函数中?
我的链接有一个用于确认的onclick事件,返回true或false:
<a onclick="return confirm('Sure?');" class="delete" href="delete.php">Delete</a>
这是给定的结构,我无法更改它。 但我想做这样的事情:
$('a.delete').click(function() {
if (confirm_from_onclick == true) {
//do some more before really returning true and following the link
}
});
答案 0 :(得分:5)
如果您无法更改 HTML标记,则需要从该节点中删除完整的onclick
内联处理程序,并在不显眼的事件处理程序中删除它。 / p>
这可能看起来像:
$(function() {
$('a').each(function(_, anchor) {
var onclk = anchor.onclick; // store the original function
anchor.onclick = null; // delete/overwrite the handler
$(anchor).bind('click', function() {
if( onclk() ) {
// do something
}
return false; // call stopPropagation() + preventDefault()
});
});
});
由于您正在处理onclick
内联事件处理程序,因此无法阻止或阻止使用不引人注意的绑定事件处理程序进行触发。它将始终首先触发,因此您需要完全删除原始事件。
您不需要存储该函数,您也可以将onclick
设置为null
并在您自己的事件处理程序中重写逻辑。我这样做只是为了方便。
答案 1 :(得分:3)
答案真的很简单,可能不是你想要的,但为什么不从锚中删除“onclick”事件,然后处理点击功能中的所有内容?
在中,在函数内创建确认对话框。
<a class="delete" href="delete.php">Delete</a>
$('a.delete').click(function(e) {
e.preventDefault();
if (confirm('Sure?')) {
//do some more before really returning true and following the link
}
});
修改强>: 抱歉!错过了你提到的部分,它是一个固定的结构,你无法改变它。研究另一种选择。