我知道很多类似的问题也在Stackoverflow中。这里有一点Jquery的问题。我添加了切换类Jquery函数,当点击正文的任何地方时,应该会删除同一个类。它现在可以工作了,但是当我们点击输入文本字段时,我不需要切换该类。
代码:
var removeClass = true;
$(".btn-search").click(function() {
$(".input-search").toggleClass('expanded');
removeClass = false;
});
$("html").click(function() {
if (removeClass) {
$(".input-search").removeClass('expanded');
}
removeClass = true;
});
body {
background: #eee;
}
.col-search {
padding: 13px 8px 8px 0;
position: relative;
width: 80%;
}
.input-search {
width: 220px;
height: 34px;
max-width: 0;
padding: 5px 10px;
transition: all .2s ease;
position: absolute;
top: 13px;
bottom: 13px;
right: 46px;
border: 0;
box-sizing: border-box;
opacity: 0;
}
.input-search.expanded {
max-width: 220px;
opacity: 1;
}
.btn-search {
position: absolute;
right: 0;
width: 38px;
height: 34px;
border: 0;
background: #333;
color:#fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div class="col-search">
<input class="input-search" type="search" placeholder="Search" />
<input type="button" class="btn-search" value="click">
</div>
6条答案
按热度按时间jtjikinw1#
要解决这个问题,你可以检查是哪个元素引发了使DOM冒泡的click事件,如果它不在
.col-search
中,你可以切换这个类。还要注意,此逻辑使
removeClass
变量成为冗余变量。nzrxty8p2#
确保使用event.target检查事件不是由要排除的输入触发的
这也不会干扰可能绑定到输入本身的其他事件。
7d7tgy0s3#
只需在输入上使用返回值https://jsfiddle.net/fcdo7kyh/的事件更改JS
insrf1ej4#
请检查以下代码:
超文本:
联森:
一个一个二个一个一个一个三个一个一个一个一个一个四个一个
这就是你所期望的吗?
p4tfgftt5#
ldioqlga6#
甜美而简单