我是jQuery的新手,所以请原谅我提出这么简单的问题。我想使用jQuery Spin库,并在值发生变化时收到通知。这是我的代码:
<script>
$(document).ready(function(){
$.spin.imageBasePath = './theme/css/images/spin1/';
$('#spin1').spin({
min: 1,
max: 99,
lock: true,
beforeChange: calculate_price()
});
});
function calculate_price() {
$('#lblTotalPrice')[0].innerHTML = $('#spin1')[0].value;
}
</script>
这很简单。但问题是每次加载页面时都会触发“calculate_price”函数,当用户更改Spin Edit的值时,它不会触发。
有人知道为什么会这样吗?
答案 0 :(得分:4)
我不熟悉那个特定的图书馆,但是如果你还有其他一切,那么你需要改变它:
beforeChange: calculate_price()
到此:
beforeChange: calculate_price
您将beforeChange
设置为调用calculate_price()
的返回结果,而不是函数本身。因此,它在初始分配时调用一次,而不是在旋转期间调用。
查看beforeChange
回调的文档,您将在值实际更改之前被调用。使用两个参数(旧值和新值)调用该回调,因此您可能希望将这些参数添加到calculate_price(newVal, oldVal)
函数并使用它们而不是从旋转控件获取值。
答案 1 :(得分:1)
您应该在calculate_price()
方法选项中将calculate_price
更改为spin()
。问题是您尝试将beforeChange
字段设置为执行calculate_price
函数的结果。这就是为什么每次加载页面时都会调用它。您需要将函数设置为回调,因此,不要将()
放在函数名后面。