每次更改#my_form中的输入时,我都想隐藏#result。我尝试了这个,但它没有工作
$('#my_form .input').each(function(){
$(this).change(function(ev) {
$('#result').hide();
});
});
编辑:我有另一个显示#result
的按钮编辑2:它适用于此但它不适用于select_tag
即使我这样做了:
$('#my_form input').on('input | change | keyup | keydown | select', function(){
$("#result").hide();
})
答案 0 :(得分:1)
试试这段代码:
$('#my_form .input').on('input,change,keyup,keydown,', function(){
$("#result").hide();
});
答案 1 :(得分:1)
试试这个 - 它对DOM更温和一点
// get the result element once
var result = $('#result');
// declare a method to handle the input change once, not every time the event happens
function input_changeHandler(event) {
result.hide();
}
// bind the listener to your form (using more efficient selectors)
$('#my_form').on('change,keyup', 'input, select, textarea', input_changeHandler);
请注意范围,因为'结果'会是全球的。如果你把它全部包装在一个方法(闭包)中,你就可以了。
希望有所帮助!
答案 2 :(得分:0)
答案 3 :(得分:0)
如前所述,如果您希望附加到input
元素,则不应该在其前面添加一个点,因为这将查找 class 输入。
此外,您不需要循环并单独将更改应用于每个input
。你可以将它绑定在初始选择器上。
最后,自{v1.7起
以来,on
是在jQuery中添加事件处理程序的推荐方法
$('#my_form input').on('change', function() {
$('#result').hide();
});
如果你想在按任何键时隐藏它,而不是仅仅在输入失去焦点时,你可以附加多个事件处理程序,但它们应该用空格分隔,而不是任何其他字符(参见文档的上一个链接):
$('#my_form input').on('input change keyup keydown', function() {
$('#result').hide();
});
答案 4 :(得分:0)
好的以上所有内容都适用于某些内容,但我发现即使使用select_tags:
$('#simulation :input').on('input | change | select', function(){
$("#result").hide();
})
答案 5 :(得分:-1)
为什么使用 $。each 功能,同时可以处理如下事件:
$('#my_form .input').on('input | change | keyup | keydown', function(){
$("#result").hide();
})