【发布时间】:2023-03-06 20:17:01
【问题描述】:
我希望如果我的输入文本值不为空,则显示我的.removetext div,但它不能正常工作。如果您在第二个字符后键入内容,我的 .removetext 将被隐藏,但如果我的输入不为空,请不要隐藏我的 .removetext 类。
我的错误在哪里?我想我不明白 keydown 事件
$(document).ready(function() {
$('.search-hotels').on('input', function() {
var val = $.trim(this.value);
if (!val == "") {
$(".removetext").show(val.length > 0, function() {
var clear = $(this);
clear.on('click', function() {
alert('hey');
})
});
} else {
$(".removetext").hide();
}
});
});
.main {
position: relative;
width: 40%;
}
.search-hotels {
width: 100%;
padding: 15px;
border: 3px solid #ccc;
}
.removetext {
position: absolute;
right: 0;
top: 25%;
font-size: 23px;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="main">
<input type="text" class="search-hotels">
<div class="removetext">×</div>
</div>
【问题讨论】:
-
只是出于好奇,
$(el).show(function)到底是如何工作的?我在jQuery.show 的文档中没有看到,我认为它使用的是.show(duration, complete)模式,有人可以确认吗? -
可能是一个测试 - 如果只有一个参数和参数是一个函数,则将其用作回调
-
如果您添加
$(".removetext").show(val.length > 0, function() { var clear = $(this); clear.on('click', function() { alert('hey'); }),那么对于每次击键,您都会添加一个事件处理程序
标签: javascript jquery html css