我想在我的网站上创建一个自定义确认框。
HTML
<div id='box'>
<button id='confirm'></button>
</div>
<button id='startConfirmation'></div>
javascript(jquery)
$('#startConfirmation').click(function()
{
if(buttonClicked())
{
//do stuff
}
});
function buttonClicked()
{
return $('#confirm').click(function()
{
return true;
});
}
答案 0 :(得分:1)
事件处理程序是否可以绑定在匿名函数中。
是
javascript会等待返回值,或者在执行时间暂停/暂停后返回null / false。
没有
是否可以使用延迟对象确认框?
是
我很难将延迟对象的工作原理以及如何实现它们。
它们仍然是异步的,这意味着你不能简单地调用一个函数并从中调用return
的值。它们只允许更容易地链接多个异步任务。
以下是理论上的工作吗?
不,正如我刚才所说 - buttonClicked()
几乎无法返回有用的价值。它可能有某种内部存储并返回一个布尔值,无论该按钮是否被点击过一次,但我认为这不是你想要的。
有了延迟,它更像是这样:
function buttonClicked() {
var deferred = $.Deferred();
$('#confirm').one("click", deferred.fulfill);
// maybe reject at [ESC] or when hitting a close button?
return deferred.promise;
}
$('#startConfirmation').click(function() {
// every time the start button is hit
buttonClicked().then(function() {
// do stuff (maybe return another promise)
}).always(closeDialogue);
});