Jquery ui 如何使jQuery UI工具提示的打开事件遵守show.delay属性设置

Jquery ui 如何使jQuery UI工具提示的打开事件遵守show.delay属性设置,jquery-ui,settimeout,jquery-ui-tooltip,Jquery Ui,Settimeout,Jquery Ui Tooltip,jQuery UI工具提示的打开事件不是在弹出窗口打开时触发,而是在鼠标进入元素时触发。它不符合show.delay属性设置。这是有文档记录的行为,所以我认为这不是一个bug 因此,如果我在表格的相邻单元格上有工具提示,并且用户在这些单元格上拖动鼠标,我的打开和关闭处理程序中的操作将执行多次——三、四、五次——是鼠标输入的单元格数的倍 如果show.delay尚未发生,退出公开赛的好方法是什么 编辑:由于不知道delay.show经过了多少时间,我不得不为setTimeout选择一个任意的持续时

jQuery UI工具提示的打开事件不是在弹出窗口打开时触发,而是在鼠标进入元素时触发。它不符合show.delay属性设置。这是有文档记录的行为,所以我认为这不是一个bug

因此,如果我在表格的相邻单元格上有工具提示,并且用户在这些单元格上拖动鼠标,我的打开和关闭处理程序中的操作将执行多次——三、四、五次——是鼠标输入的单元格数的倍

如果show.delay尚未发生,退出公开赛的好方法是什么

编辑:由于不知道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);
    }
。。。
展示:{
延误:666
},
打开:功能(事件、用户界面){
如果(me.changingClass)返回;
me.changingClass=真;
美元(“td.baz”).switchClass(“foo”、“bar”);
},
关闭:功能(事件、ui、dupids){
美元(“td.baz”).switchClass(“bar”、“foo”);
setTimeout(函数(){me.changingClass=false;},200);
}

如果我理解你的意图,我想这可能会奏效:

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");
    }
});

如果我明白你的意思,我想这可能会奏效:

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");
    }
});

你能展示一下你目前掌握的代码吗?我想一个超时就可以了,但我不能肯定地说,如果不看你正在处理什么。你能添加足够的代码来复制你的问题吗?复制它所需要做的就是将工具提示附加到表的TDs上。鼠标进入和离开时立即打开和关闭火焰,而不是在达到show.delay阈值后。因此,如果用户将鼠标(快速)拖动到一张表的几个相邻单元格上,进入单元格将触发打开事件,离开单元格将触发关闭事件,因此,如果鼠标在移动过程中接触三个单元格,这些事件将各触发三次。你能将其放入小提琴中吗?我不确定您是如何实现节目延迟的。请参阅编辑;它是tooltip配置对象的属性。您能显示到目前为止的代码吗?我想一个超时就可以了,但我不能肯定地说,如果不看你正在处理什么。你能添加足够的代码来复制你的问题吗?复制它所需要做的就是将工具提示附加到表的TDs上。鼠标进入和离开时立即打开和关闭火焰,而不是在达到show.delay阈值后。因此,如果用户将鼠标(快速)拖动到一张表的几个相邻单元格上,进入单元格将触发打开事件,离开单元格将触发关闭事件,因此,如果鼠标在移动过程中接触三个单元格,这些事件将各触发三次。你能将其放入小提琴中吗?我不确定您是如何实现节目延迟的。请参阅编辑;它是工具提示配置对象的属性。