如何取消YUI DataTable中的事件冒泡?

时间:2011-07-07 14:14:41

标签: javascript yui event-bubbling yui-datatable

我正在尝试使用复选框列创建YUI 2.8.1 DataTable。当用户选择该行时,它应该突出显示,但不会在用户选中复选框时显示。

我试图通过在checkboxClickEvent中设置cancelBubble = true来抑制rowClickEvent,但是YUI库忽略了这一点。如何防止rowClickEvent被触发?

this.testDataTable.subscribe("checkboxClickEvent", function (oArgs)
{
    var elCheckbox = oArgs.target;
    var oRecord = this.getRecord(elCheckbox);
    oRecord.setData("check", elCheckbox.checked);
    oArgs.event.cancelBubble = true; //Event bubbles anyway
});

2 个答案:

答案 0 :(得分:1)

从checkboxClickEvent

返回false

答案 1 :(得分:0)

我通过设置一个标志来抑制行点击来解决这个问题,但我仍然想知道如何“正确地”取消气泡。

suppressHighlight = false;

this.testDataTable.onEventRowClick = function (oArgs)
{
    ...

    if (!suppressHighlight)
    {
        ...
    }
    suppressHighlight = false;
};
this.testDataTable.subscribe("rowClickEvent", this.testDataTable.onEventRowClick);

this.testDataTable.subscribe("checkboxClickEvent", function (oArgs)
{
    var elCheckbox = oArgs.target;
    var oRecord = this.getRecord(elCheckbox);
    oRecord.setData("Check", elCheckbox.checked);

    suppressHighlight = true;
});