【问题标题】:jQuery UI Draggable 'stop' event called too many times?jQuery UI Draggable 'stop' 事件调用了太多次?
【发布时间】:2010-06-17 16:11:27
【问题描述】:

我有一种感觉,我要么误解了“停止”事件,要么没有正确执行它,但它似乎在拖动元素时被多次调用。

makeAllDragable = function () {
    $(".test-table").draggable({
        start: function (event, ui) { $(this).click(); },
        stop: function (event, ui) { foo() }
    }).click(function () {
        selectTable($(this));
    });
}

foo = function () {
    alert("test");
}

在这个例子中 foo 被调用了大约 30 次,不应该只是在我释放可拖动对象时?不过,jQuery 文档实际上并没有说在哪里。

【问题讨论】:

  • 适合我。 .stop() 在释放鼠标按钮时被调用。 jsfiddle.net/jRjup
  • 这个例子给了我一个来自网站的 JS 错误,上面写着“控制台未定义”,所以我无法检查它。
  • 只需注释掉console 行。我只需要创建selectTable 这样你的click 就会有一个函数可以调用。 jsfiddle.net/jRjup/2
  • 我刚刚意识到这个问题,我在 click 函数中也调用了 foo() ,这就是它每次移动时都会被调用的原因。不过我之前没见过 jsfiddle,很酷。
  • 格雷厄姆,您应该将此作为答案发布,然后选择您的答案作为已接受的答案,以便 (1) 其他人可以轻松找到它并 (B) 您收集积分。

标签: javascript jquery jquery-ui


【解决方案1】:

事实证明,我在原始问题中编写的上述代码并不是我正在使用的,我实际上是这样调用 foo() 的:

makeAllDragable = function () {
    $(".test-table").draggable({
        start: function (event, ui) { $(this).click(); },
        stop: function (event, ui) { foo() }
    }).click(function () {
        foo(); /*difference here*/
    });
}

无论出于何种原因,当该函数也出现在 stop() 事件中时,拖动它会反复引发 click() 函数。至少表面上看起来是这样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2011-04-05
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    相关资源
    最近更新 更多