當用戶點擊屏幕上的任何位置時,我會在頁面上放置一個腳本,以隱藏具有特定類的所有元素。 該代碼在PC上完美工作,但不適用於平板電腦和手機。我應該只使用Javascript,而不是jQuery。在平板電腦和手機上不工作的元素之外點擊
<script type="text/javascript">
function onClick(id) {
var e = document.getElementById(id);
if(e.className == 'item active') {
e.className = 'item none';
}
else {
var x = document.querySelectorAll('.item.active');
for(var i = 0; i < x.length; i++){
x[i].className = "item none";
}
e.className = 'item active';
}
}
function findClosest (element, fn) {
if (!element) return undefined;
return fn(element) ? element : findClosest(element.parentElement, fn);
}
document.addEventListener("click", function(event) {
if (document.querySelector('.item.active') != null){
var t = document.querySelector('.item.active').id;
}
var target = findClosest(event.target, function(el) {
return el.id == t;
});
if (!target) {
var x = document.querySelectorAll('.item.active');
for(var i = 0; i < x.length; i++){
x[i].className = "item none";
}
}
}, false);
</script>
<div id="item1" class="item none" onclick="onClick('item1')">
...
</div>
<div id="item2" class="item none" onclick="onClick('item2')">
...
</div>
...
您是否使用某種JavaScript觸摸事件庫來覆蓋常規計算機鼠標事件? – KevBot
@KevBot不,費德里科是對的。我只使用點擊事件,沒有任何事情可以觸摸。 – adhinna