gpt4 book ai didi

javascript - 单击或触摸时切换 div,并在单击/触摸外部时隐藏

转载 作者:行者123 更新时间:2023-11-30 08:09:55 25 4
gpt4 key购买 nike

我正在尝试为要显示和隐藏的 div 同时支持鼠标和触摸事件。我的鼠标事件运行良好,但我不确定如何让它在基于触摸的设备(iPhone、iPad 或基于 Android 的手机)上运行。

交互应该是当用户点击或触摸触发器时,会显示“搜索”框,如果他们在打开的搜索框外点击/触摸或重新点击/触摸触发器,它应该关闭(隐藏)。

这是我的 HTML:

<div id="search">
<div class="search-link">
<a href="#search" class="search-nav-button" id="search-trigger">Search</a>
</div>
<div class="search-box">
<form action="/search" id="search_form">
<input placeholder="Search" type="text" />
<input id="search-submit" type="submit" value="Submit" />
</form>
</div>
</div>

还有,我的 JavaScript(使用 jQuery):

var $searchBox = $('#search .search-box');
var $searchTrigger = $('#search-trigger');

$searchTrigger.on("click", function(e){
e.preventDefault();
e.stopPropagation();
$searchBox.toggle();
});
$(document).click(function(event){
if (!($searchBox.is(event.target)) && ($searchBox.has(event.target).length === 0)){
$searchBox.hide();
};
});

工作示例:http://jsfiddle.net/T5HMt/

最佳答案

http://jsfiddle.net/LYVQy/2/

我刚刚包含了 JQuery Mobile 并将您的“点击”事件更改为 .on('tap',function(e))...

Jquery Mobile 似乎将“点击”事件视为桌面浏览器上的点击,因此这似乎符合您的需要。

$searchTrigger.on("tap", function(e){
e.preventDefault();
e.stopPropagation();
$searchBox.toggle();
});

$(document).on('tap',function(event){

if (!($searchBox.is(event.target)) && ($searchBox.has(event.target).length === 0)){
$searchBox.hide();
};
});

关于javascript - 单击或触摸时切换 div,并在单击/触摸外部时隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12112404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com