Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于跳转/单击的jQuery/jQuery UI滑块事件。功能不点火_Javascript_Jquery_Jquery Ui_Javascript Events - Fatal编程技术网

Javascript 用于跳转/单击的jQuery/jQuery UI滑块事件。功能不点火

Javascript 用于跳转/单击的jQuery/jQuery UI滑块事件。功能不点火,javascript,jquery,jquery-ui,javascript-events,Javascript,Jquery,Jquery Ui,Javascript Events,我正在创建一个jquery滑块来循环遍历一组div,如果我按住滑块并拖动它,然后放开它。调用handleSlider()。如果单击滑块中的随机点,则该函数永远不会被调用。我尝试过使用其他两种事件类型,但都没有成功。是否有一个事件处理程序用于“当用户单击/跳跃”滑块而不滑动 $( "#video_seek" ).slider({ range: "max", step: 1, slide: function( event, ui ) {

我正在创建一个jquery滑块来循环遍历一组div,如果我按住滑块并拖动它,然后放开它。调用handleSlider()。如果单击滑块中的随机点,则该函数永远不会被调用。我尝试过使用其他两种事件类型,但都没有成功。是否有一个事件处理程序用于“当用户单击/跳跃”滑块而不滑动

$( "#video_seek" ).slider({
        range: "max",
        step: 1,
        slide: function( event, ui ) {
        handleSlider();
        }
    });
$( "#video_seek" ).slider({ stop: function( event, ui ) {handleSlider();}});
$( "#video_seek" ).slider({ change: function( event, ui ) {handleSlider();}});

我相信你的问题在于语法。每次使用$时,它都会生成一个新的jQuery对象,所以

$( "#video_seek" ).slider({
        range: "max",
        step: 1,
        slide: function( event, ui ) {
        handleSlider();
        }
    });
//below are not necessarily referring to the original slider, but rather creating new sliders.
$( "#video_seek" ).slider({ stop: function( event, ui ) {handleSlider();}});
$( "#video_seek" ).slider({ change: function( event, ui ) {handleSlider();}});
@安德鲁的语法是正确的。您需要的只是“更改”事件,您可以在原始声明中这样设置:

$( "#video_seek" ).slider({
    change: function( event, ui ) {
         handleSlider();
    }
});
$( "#video_seek" ).slider({
    change: handleSlider
});
$( "#video_seek" ).bind( "slidechange", function(event, ui) {
     handleSlider();
});
甚至像这样:

$( "#video_seek" ).slider({
    change: function( event, ui ) {
         handleSlider();
    }
});
$( "#video_seek" ).slider({
    change: handleSlider
});
$( "#video_seek" ).bind( "slidechange", function(event, ui) {
     handleSlider();
});
如果需要在事件发生后附加事件处理程序,请执行以下操作:

$( "#video_seek" ).slider({
    change: function( event, ui ) {
         handleSlider();
    }
});
$( "#video_seek" ).slider({
    change: handleSlider
});
$( "#video_seek" ).bind( "slidechange", function(event, ui) {
     handleSlider();
});
甚至:

$( "#video_seek" ).bind( "slidechange", handleSlider);
(编辑)

将它们放在一起,避免生成后续jQuery对象

var videoSeek = $('#video_seek');
videoSeek.slider({
     slide: handleSlider
});
//added later on not necessary just for example of doing so
videoSeek.bind('slidechange', handleSlider);

function handleSlider(event, ui){
     //do stuff
}

您需要在实际对象创建中设置事件,或在之后绑定它们

$( "#video_seek" ).slider({
    range: "max",
    step: 1,
    slide: function(event, ui) {handleSlider();}
    stop: function(event, ui) {handleSlider();}
    change: function( event, ui ) {handleSlider();}
});
或:


我很确定改变应该在这里起作用()。这不是你看到的行为吗?@Andrewhitaker好多了,但不是完美的,我去掉了函数。我想我有一个功能在滑块完成更新之前就启动了。
slide
每次滑动鼠标时都会启动。这就是问题所在吗?谢谢!我帮了大忙。我没有意识到它每次都创建对象,我把它更多地当作一个选择器!这里有一个额外的技巧,它对程序内存非常有帮助。如果要多次选择相同的对象,请将jquery对象保存在javascript变量中,如下所示:var elem=$('#elem');然后elem.css('background','red');隐藏元素();或者别的什么。