javascript - 使用 jQuery 在搜索输入上添加/删除 CSS 类
问题描述
我有一个搜索字段,因此当您单击搜索图标时,会添加一个带有灰色下划线的类。我的问题是当我在搜索字段之外单击时无法删除该类。
有谁知道当用户在搜索字段外单击时如何删除灰线类?
发生了很多事情,所以这是我的 javascript 处理这个:
//Header Search Handler
function headerSearchHandler() {
var $searchInput = $(".header-search input[type=text]"),
$searchSubmit = $(".header-search input[type=submit]"),
$mobSearchBtn = $(".mobile-search-btn"),
$myAccountText = $(".menu-utility-user .account-text"),
$miniCart = $("#header #mini-cart"),
$searchForm = $(".header-search form"),
$headerPromo = $(".header-promo-area");
//
$mobSearchBtn.on("click touchend", function(e) {
$(this).hide();
//$myAccountText.hide();
$searchInput.show();
$searchInput.addClass('grey-line');
$searchSubmit.show();
$miniCart.addClass("search-open");
$searchForm.addClass("search-open");
setTimeout(function() {
$searchInput.addClass("active").focus();
}, 500);
e.stopPropogation();
});
$searchInput.on("click touchend", function(e) {
$searchInput.addClass('grey-line');
e.stopPropogation();
}).blur(function(e) {
var $this = $(this);
if ($this.hasClass("active")) {
$this.removeClass("active");
$searchSubmit.hide();
$mobSearchBtn.show();
$miniCart.removeClass("search-open");
$searchForm.removeClass("search-open");
}
});
$('body').on("click", function(e) {
if ($searchInput.hasClass('grey-line')) {
$searchInput.removeClass('grey-line');
e.stopPropogation();
}
});
} //End Header Search Handler
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<form id="search" role="search" onsubmit="return checkForm()" action="${searchPage}" method="get" name="simpleSearch">
<fieldset>
<legend aria-hidden="true" class="visually-hidden">${Resource.msg('simplesearch.searchCatalog', 'search', null)}</legend>
<button class="mobile-search-btn" for="q" aria-hidden="false" aria-expanded="false" aria-controls="q" tabindex="0" aria-label="show search field button tap twice to open search input field">${Resource.msg('simplesearch.searchlabel', 'search', null)}</button>
<input tabindex="0" type="text" id="q" name="q" value="" class="searchField" placeholder="${Resource.msg('simplesearch.searchtext', 'search', null)}" style="font-style:normal;" unbxdattr="sq" />
<input tabindex="0" type="submit" name="go" value="${Resource.msg('simplesearch.searchtext', 'search', null)}" unbxdattr="sq_bt" />
</fieldset>
</form>
解决方案
尝试使用blur
.
$('.searchFieldClass').blur(function() {
$(this).removeClass('.greyLineClass');
});
推荐阅读
- machine-learning - 如何从话语中删除预构建的实体标签
- python - 从头到尾的 Numpy 切片
- vhdl - 使用双端口 ram(FPGA) 从不同时钟域传输数据
- python - 从列表中删除条目而不更改顺序的计算有效方法?
- angular - 如何在 Angular Karma 中为组件存根“declare var”
- unicode - Unicode 中的对齐方式
- scala - Apache Spark - 推文处理
- string - 给定一系列位置的 sed 就地替换
- python - 将输出 URL 与文件中的下一行一起保存
- python - 无法通过 Facebook Graph API 检索事件