我有一个代码来更改一个输入值,点击+/-
符号。当值为1
时,字符-
消失。
我的疑问是:当页面被加载时,我希望“-”也会消失。怎么做?
我已经尝试过了,在下面这样使用trigger
,但是它不起作用:
$(document).on('change', 'input', function() {
//...
}).trigger('change');
这是我的密码:
$(document).on('change', 'input', function() {
if ($(this).val() == 1) {
$('.substract').hide();
}
});
$('.add').on('click', function() {
var old_value = parseInt($('input').val());
$('input').val(old_value + 1).change();
})
$('.substract').on('click', function() {
var old_value = parseInt($('input').val());
$('input').val(old_value - 1).change();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="1">
<span class="add">+</span>
<span class="substract">-</span>
发布于 2015-06-17 14:46:57
我建议你使用CSS
.substract { display:none; }
但是,使用jQuery,只需触发input
的change
事件即可。由于您使用的是事件委托,所以您是使用document
绑定事件,而不是用input
绑定事件,因此.trigger('change');
没有工作。
$('input').change();
$(document).on('change', 'input', function() {
if ($(this).val() == 1) {
$('.substract').hide();
}
});
$('.add').on('click', function() {
var old_value = parseInt($('input').val());
$('input').val(old_value + 1).change();
})
$('.substract').on('click', function() {
var old_value = parseInt($('input').val());
$('input').val(old_value - 1).change();
})
$('input').change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="1">
<span class="add">+</span>
<span class="substract">-</span>
发布于 2015-06-17 14:47:36
你为什么不直接在加载时使用一种样式:
<span class="substract" style='display:none'>-</span>
或者如果你害怕jQuery
jQuery(document).ready(function($){
$('.substract').hide();
}
请记住等待DOM就绪,以确保元素已加载。我将选择第一个版本,避免用户看到按钮,然后看到它在几秒钟后消失。
发布于 2015-06-17 14:50:08
我会把负数藏起来
<span class="substract" style="display: none;">-</span>
,
然后添加
if ($(this).val() == 1) {
$('.substract').hide();
}else{
$('.substract').show(); // add this line
}
演示
https://stackoverflow.com/questions/30894922
复制相似问题