jquery event.stopImmediatePropagation()似乎不起作用

时间:2010-01-10 18:11:41

标签: jquery

我正在使用一些现有的javascript代码,它接受LI并使其可以输入到输入字段。我想为此添加一个额外的约束,并通过创建自己的事件处理程序来强制执行此操作,并在不满足约束时调用event.stopImmediatePropagation()。 这个现有的javascript看起来像这样:

$input.droppable({
    accept: accept,
    activeClass: 'droppable_active',
    hoverClass: 'droppable_hover',
    //          tolerance:    'touch',
    drop: function(e, ui)
    {
       // do some stuff;
    }

并通过以下调用在我的代码中启动:

$('form').dmFrontForm();

这是一个自定义jQuery UI,用于设置该事件处理程序。

在我打电话之前,我设置了自己的处理程序:

$('input').('drop', function(e, ui) {
    if (constraintIsNotMet) {
        e.stopImmediatePropagation();
    }
});

我通过添加alert语句验证了事件处理程序被调用的顺序(实际上无论我把这些代码行放在什么顺序,我的处理程序总是首先响应,这对我来说有点可疑),但无论如何很难我尝试,我无法让第一个处理程序退出。

1 个答案:

答案 0 :(得分:1)

我知道这不能直接回答你为何不停止传播的问题,但为什么不使用内置的 accept 方法?

http://docs.jquery.com/UI/Droppable#option-accept

用法示例

$('.selector').droppable('option', 'accept', function(){...});

该函数应返回false以取消drop ..