我正在尝试为我要显示和隐藏的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();
};
});
答案 0 :(得分:4)
我刚刚收录了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();
};
});
答案 1 :(得分:2)
这就够了: JsFiddle
$searchTrigger.on('click', function(e) {
$searchBox.toggle();
e.preventDefault();
});
适用于屏幕和触控设备。
答案 2 :(得分:0)
您还可以使用setOnClickListener
事件并覆盖onClick
这样的功能:
btnclickme = (Button) findViewById(R.id.btn_clickme);
btnclickme.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// do your code here
}
});