如何重置stopImmediatePropagation

时间:2013-02-01 23:32:09

标签: jquery onchange mousedown kendo-grid

我被困在这里,无法继续前进。任何帮助/指针将不胜感激。

我有一个Kendo网格,我正在网格上扩展一个函数,以便在更改事件被触发之前,我绑定了mousedown事件以获得用户的确认。只有在收到肯定确认后,才应解雇变更事件。在负面混淆中,我正在使用“stopImmediatePropagation”来实现此目的。

$("#KendoGrid").extendedFunction();

扩展功能定义如下:

$.fn.extendedFunction= function () {
    var $grid = $(this);
    var $kGrid = $grid.data("kendoGrid");

    if (!$kGrid) {
        return this;
    }
    else {
        $kGrid.tbody.on('mousedown', function (e) {
            showConfirmation(e);
        });
    }
};

function showConfirmation(e) {
    var dialogResult = confirm("confirm?");
        if (dialogResult) {
            return true;
        }
        else {
            e.stopImmediatePropagation();
            return false;
        }
    }
    return true;
}

因此,问题是当dialogResult为false时,立即传播按预期停止,但是当对话结果为true时......基础kendo事件不会被触发。

我也尝试过使用kgrid.trigger(“更改”);但那也不起作用。那么,有没有办法解决这个问题或者无论如何重置stopImmediatePropagation以便在dialogResult为true时触发kendo change事件?

提前致谢!!

2 个答案:

答案 0 :(得分:0)

不是答案,但评论时间太长

您是否确定在e.stopImmediatePropagation()事件中调用的mousedown禁止了潜在的Kendo事件?我觉得抑制可能是由其他东西引起的,可能是显示确认对话本身,无论其结果如何。

如果是这样,那么您可能需要考虑完全不同的策略。

在与允许/禁止的代码相同的事件线程中放置确认更为正常,而不是在一个线程中获取语句来抑制另一个事件。我想你试图避免不得不破解Kendo代码,但最终可能是更容易的选择。

修改

代码应简化如下:

$.fn.extendedFunction= function () {
    var $grid = $(this);
    var $kGrid = $grid.data("kendoGrid");
    if ($kGrid) {
        $kGrid.tbody.on('mousedown', function (e) {
            if (!confirm("Confirm?")) {
                e.stopImmediatePropagation();
            }
        });
    }
    return this;
};

如果如下所述,e.stopImmediatePropagation()确实是禁止语句,那么更简单的代码可能会起作用。

答案 1 :(得分:0)

这次我在恐怖的“框架”中工作,我不能使用任何其他不同的策略,像这样(只是一个非常愚蠢的示例,但是可以工作):

np.where

可以帮助...