jQuery的滑块“改变”事件:我如何确定谁把它称为?(jQuery slider “change”

2019-06-23 20:15发布

我认为作为我的音乐播放时间线滑块。 min值是从0到最大vlaue是歌曲长度(以秒计)。 每个第二(I为此有计时器),滑块移动并且该值被设置为当前时间。 这行代码看起来像这样:

$("#sliderTime").slider("option", "value", document.sound.controls.currentPosition);

用户可以滑动/点击滑块,并跳转到另一点的歌,这是射击的功能“播放(startPlayFromHere)”。 它看起来像这样:

$("#sliderTime").slider({
   ...
  change: function (event, ui) { play(ui.value) },
});

的问题是,无论是在定时器和用户代码行正在呼叫的滑块的相同“改变”事件,并且用户不能移动滑块。

所以我的问题是我怎么能确定用户是否被称为更改事件或没有(这意味着它是定时器)?

我希望这是不够清楚,谢谢!

Answer 1:

您可以确定变化事件是否手动或编程产生了通过测试event.originalEvent在更改处理。

$('#slider').slider({
    change: function(event, ui) {
        if (event.originalEvent) {
            //manual change
            play(ui.value);
        }
        else {
            //programmatic change
        }
    }
});

见小提琴 。



文章来源: jQuery slider “change” event: How do I determine who called it?