单击或触摸时切换div并在外部单击/触摸时隐藏
我正在尝试为我想要显示和隐藏的div支持鼠标和触摸事件。 我的鼠标事件运行良好,但我不确定如何在基于触摸的设备(iPhone,iPad或基于Android的手机)上使用它。
交互应该是当用户点击或触摸触发器时,显示“搜索”框,如果他们在打开的搜索框外点击/触摸或重新点击/触摸触发器,则应该关闭(隐藏)。
这是我的HTML:
而且,我的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/
我刚刚收录了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(); }; });
这就足够了: JsFiddle
$searchTrigger.on('click', function(e) { $searchBox.toggle(); e.preventDefault(); });
它适用于屏幕和触摸设备。
您还可以使用setOnClickListener
事件并覆盖onClick
函数,如下所示:
btnclickme = (Button) findViewById(R.id.btn_clickme); btnclickme.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // do your code here } });