Gre*_*reg 53 jquery events jquery-ui-slider
如何在jQuery UI滑块上触发更改事件?
我以为会是
$('#slider').trigger('slidechange');
Run Code Online (Sandbox Code Playgroud)
但这没有任何作用.
完整示例脚本如下:
<link href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" type="text/css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script>
<script src="http://jqueryui.com/latest/ui/ui.core.js" type="text/javascript"></script>
<script src="http://jqueryui.com/latest/ui/ui.slider.js" type="text/javascript"></script>
<body>
<div id="slider"></div>
<script type="text/javascript">
$().ready(function()
{
$('#slider').slider({change: function() { alert(0); }});
// These don't work
$('#slider').trigger('change');
$('#slider').trigger('slidechange');
});
</script>
Run Code Online (Sandbox Code Playgroud)
当页面加载时,我希望这会警告"0"
red*_*are 50
尝试
$slider = $('#slider');
$slider.slider('option', 'change').call($slider);
Run Code Online (Sandbox Code Playgroud)
不理想,但让你工作!

Joe*_*ore 39
我知道这已经超过了发布日期,但是我想发布这个解决方案给任何偶然发现这篇文章的人.
您可以通过执行以下操作来完成事件触发:
//TO DEFINE SLIDER AND EVENTS
$('#slider').slider().bind('slidechange',function(event,ui){...});
//TO TRIGGER EVENT
$('#slider').trigger('slidechange');
Run Code Online (Sandbox Code Playgroud)
遗憾的是,您无法将函数定义为init对象中的选项,但是,我认为它最终看起来更清晰,并且比使用调用方法的其他答案更直接和正确(即它确实使用事件系统).
是的,你在这里定义的回调将在正常操作(在这种情况下改变滑块的位置)被调用,就像通常那样.只需确保使用UI文档中的正确事件类型名称.
如果要一次添加多个事件,请记住您可以使用事件名称作为键提供要绑定的对象:
//TO DEFINE SLIDER AND EVENTS
$('#slider').slider().bind({
slidestart : function(event,ui) {...},
slidechange : function(event,ui) {...},
slidestop : function(event,ui) {...},
});
//TO TRIGGER EVENTS
$('#slider').trigger('slidestart');
$('#slider').trigger('slidechange');
$('#slider').trigger('slidestop');
Run Code Online (Sandbox Code Playgroud)
这在文档中有说明,但不是很清楚.我自己开发了几个插件来真正理解UI事件系统.
请享用
hra*_*itz 15
一个好方法就是改变滑块的值.然后,滑块自身的更改方法应响应值的更改.例如:
var newValue=5;
$('#slider').slider("value", newValue);
Run Code Online (Sandbox Code Playgroud)