如何使jQuery UI工具提示的开放事件服从show.delay属性设置

时间:2013-09-17 19:36:24

标签: jquery-ui settimeout jquery-ui-tooltip

当弹出窗口明显打开但是只要鼠标进入元素,jQuery UI工具提示的打开事件就不会触发。它不遵守show.delay属性设置。这是记录在案的行为,所以我认为这不是一个错误。

因此,如果我在表格的相邻单元格上有工具提示,并且用户将鼠标拖过这些单元格,则我的打开和关闭处理程序中的操作将被多次执行 - 三次,四次,五次 - 多次作为鼠标输入的细胞数量。

如果show.delay尚未发布,退出open事件的好方法是什么?

编辑:不知道在delay.show上已经过了多少时间,我不得不为setTimeout选择任意持续时间,并使用标志跟踪类切换是否在进行中:

     <snip> ...
     show: {
        delay: 666
     },

    open: function (event, ui) {
            if (me.changingClass) return;           
            me.changingClass = true;
            $("td.baz").switchClass("foo", "bar");

    },
    close: function (event, ui, dupids) {
        $("td.baz").switchClass("bar", "foo");           
        setTimeout(function () { me.changingClass = false; }, 200);
    }

1 个答案:

答案 0 :(得分:1)

如果我明白你的目标,我认为这可能会成功:

<强> Working Example

var timer;
$('td').tooltip({
    show: {
        delay: 2000 //number of milliseconds to wait
    },
    open: function (event, ui) {
        var xthis = this;
        timer = setTimeout(function () {
            $(xthis).siblings().switchClass("bar", "foo");
        }, 2000); // number of milliseconds to wait
    },
    close: function (event, ui, dupids) {
        clearTimeout(timer);
        $(this).siblings().switchClass("foo", "bar");
    }
});