我在Chrome 41中使用jQuery 2.1。我需要从输入滑块中获取值,因为它会发生变化;但是,当我使用jquery的change事件时,我只会在释放鼠标后从滑块中获取值,而不是在mousedown和drag中。
这个小例子说明了问题:
<input type="range" id="slider" value="0.5" min="0.0" max="1.0" step="0.01" />
<br />
<span id="slider_value">Nothing yet.</span>
<script>
$(document).on('change', '#slider', function() {
$('#slider_value').html( $(this).val() );
});
</script>
我想我可以通过在鼠标上/下事件上设置布尔值然后获取mousemove事件的值来提出修复。有更清洁的解决方案吗?
答案 0 :(得分:32)
在现代浏览器中,您可以使用input
事件:
$(document).on('input', '#slider', function() {
$('#slider_value').html( $(this).val() );
});
注意IE&lt; 9不支持它,但它也不支持range
输入
的 DEMO 强>
答案 1 :(得分:7)
当
<input>
或<textarea>
元素的值发生变化时,会同步触发DOMinput
event。
当用户提交对元素值的更改时,
<input>
,<select>
和<textarea>
元素会触发change
event。与input
event不同,对于元素值的每次更改,都不一定会触发change事件。
$(document).on('input change', '#slider', function() {
$('#slider_value').html( $(this).val() );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="range" id="slider" value="0.5" min="0.0" max="1.0" step="0.01" />
<br />
<span id="slider_value"></span>
我确信只听input
event就足够了。
答案 2 :(得分:1)
此外,如果您希望输入范围当前值随滑块移动,您可以尝试this solution。
答案 3 :(得分:1)
这对我有用。这使用了JQuery和JS。
<header>
<h1>HEADER</h1>
</header>
<div class="container">
<div class="menu">
<h3>MENU</h3>
<span>ITEM 1</span>
<span>ITEM 2</span>
<span>ITEM 3</span>
<span>ITEM 4</span>
<span>ITEM 5</span>
</div>
<section class="content">
<h2>CONTENT</h2>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It
has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop
publishing software like Aldus PageMaker including versions of Lorem Ipsum</p>
</section>
<aside class="ads">
<h2>AD</h2>
<h2>AD</h2>
</aside>
</div>
<footer>
<h1>FOOTER</h1>
</footer>
在我看来,使用document.getElementById()选择DOM元素并修改属性/值使您可以访问JQuery不能提供的某些属性。
在这种情况下,我无法使用上面的代码访问$("#slider").on("input change",(e)=>{
document.getElementById("label").value = `${e.target.value}`;});
值并进行相应的更改,但是使用JQuery的选择器时,相同的代码将失败...尝试可互换地追加<input>
,{{ 1}},.val
,.text
都起作用,只有.innerText
有效。
我不确定这是否与.html
的属性有关,但是嘿,它起作用了。
答案 4 :(得分:0)
作为2020年的更新,有些人可能会有所帮助。我遇到了一个实例,我想抓住滑块的当前值,因为用户更改了滑块的当前值,很多其他问题都回答了这个问题,但是作为替代。
我正在加载jQuery的其他功能,因此最终会混合使用普通JS和jQuery,但是如果不加载jQuery,可以很容易地修改为仅使用普通JS。
$("#number-slider").mousemove(function(){
$("#slider-value").text(document.getElementById("number-slider").value);
})
滑块具有其自己的ID,该值是从该ID派生的,然后可以将该值发布到具有其自己的唯一ID的元素中。抓住价值之后,您可以做任何想做的事。
一些注意事项:
getElementById
函数。答案 5 :(得分:-1)
$('#slider').change(function(){
$('#slider_value').text($(this).val());
});