Javascript 用于跳转/单击的jQuery/jQuery UI滑块事件。功能不点火
我正在创建一个jquery滑块来循环遍历一组div,如果我按住滑块并拖动它,然后放开它。调用handleSlider()。如果单击滑块中的随机点,则该函数永远不会被调用。我尝试过使用其他两种事件类型,但都没有成功。是否有一个事件处理程序用于“当用户单击/跳跃”滑块而不滑动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 ) {
$( "#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');隐藏元素();或者别的什么。