【问题标题】:Is this possible with an alert in jquery and/or javascript?这可能与 jquery 和/或 javascript 中的警报有关吗?
【发布时间】:2011-04-28 10:32:00
【问题描述】:

对于一个学校项目,我正在用 jquery 和 javascript 制作拼图。 我正在使用 jquery 和 jquery impromptu jquery(自定义警报消息)。

现在的问题是,如果所有四个部分都正确定位,我希望网站发出警报。这可能吗? 目前,它会为每个正确定位的部分提供一条消息。

jquery 代码:

 $(function() {
    $( ".draggable_l_t" ).draggable({ snap: ".droppable_l_t, .droppable_r_t, .droppable_l_b, .droppable_r_b", snapMode: "inner" });
    $( ".draggable_r_t" ).draggable({ snap: ".droppable_l_t, .droppable_r_t, .droppable_l_b, .droppable_r_b", snapMode: "inner" });
    $( ".draggable_l_b" ).draggable({ snap: ".droppable_l_t, .droppable_r_t, .droppable_l_b, .droppable_r_b", snapMode: "inner" });
    $( ".draggable_r_b" ).draggable({ snap: ".droppable_l_t, .droppable_r_t, .droppable_l_b, .droppable_r_b", snapMode: "inner" });

    $( ".droppable_l_t" ).droppable({
        accept: ".draggable_l_t",
        drop: function( event, ui ) {
            $( this )
                    $.prompt('Goed geplaatst.',{ buttons: { Ok: true, Cancel: false }, focus: 1 });
        }
    });

    $( ".droppable_r_t" ).droppable({
        accept: ".draggable_r_t",
        drop: function( event, ui ) {
            $( this )

                    $.prompt('Goed geplaatst.',{ buttons: { Ok: true, Cancel: false }, focus: 1 });
        }
    });

    $( ".droppable_l_b" ).droppable({
        accept: ".draggable_l_b",
        drop: function( event, ui ) {
            $( this )
                    $.prompt('Goed geplaatst.',{ buttons: { Ok: true, Cancel: false }, focus: 1 });
        }
    });
    $( ".droppable_r_b" ).droppable({
        accept: ".draggable_r_b",
        drop: function( event, ui ) {
            $( this )
                    $.prompt('Goed geplaatst.',{ buttons: { Ok: true, Cancel: false }, focus: 1 });
        }
    });
});
</script>

整个网站都可以访问here。其他文件为here

你能帮我解决这个问题吗?在此先感谢,弗里索

【问题讨论】:

  • 为什么不保留一个全局变量,只要放置成功的片段就会增加。每次成功,增加它,看看它是否等于 4 ?

标签: javascript jquery draggable alert droppable


【解决方案1】:

可以使用 jQuery 1.5 Deferred() 对象来做到这一点。

为每件作品创建一个这样的对象:

var def = [];
for (var i = 0; i < 4; ++i) {
   def[i] = $.Deferred();
}

然后当每个部分完成后,resolve 相应的延迟对象:

def[n].resolve();

然后在您的代码末尾,注册一个回调,该回调仅在它们全部完成时调用:

$.when.apply($, def).done(function() {
    // this will be called only when all the promises are resolved
});

【讨论】:

  • 感谢您的快速响应,但我在将您的代码放入我的代码时遇到了一些问题。我对jquery没有太多经验。你能告诉我把代码具体放在哪里吗?我应该如何处理当前警报的(提示)?
  • 将第一个块放在顶部,resolve 放在每个 drop 回调函数中,when 块放在最后。
猜你喜欢
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 2017-08-14
相关资源
最近更新 更多