所以我有一个可以在桌面和移动设备上工作的网页。然而,我在操作按钮时遇到了不少麻烦。
按钮是这样的:
<a class="button" id="upload-media-button" onclick='uploadMedia();'>Upload</a>
这是uploadMedia
代码:
var uploadMedia = function() {
if(!isUploadFormVisible){
alert(isUploadFormVisible);
event.preventDefault();
event.stopPropagation();
dropperForm = document.getElementById("upload-form");
dropperForm.className = '';
isUploadFormVisible = 1;
$("body").addClass("modal-open");
} else {
alert(isUploadFormVisible);
event.preventDefault();
dropperForm = document.getElementById("upload-form");
dropperForm.className = 'hidden';
isUploadFormVisible = 0;
$("body").removeClass("modal-open");
refreshMedia(true);
}
}
有趣的是,这些按钮在桌面上工作得很好,在手机上也能部分工作(如果不是onclick='uploadMedia();
,而是onclick='alert(whatever);
,则警报会成功显示(。我花了昨天和今天的大部分时间试图解决这个问题,但根本不起作用。
我也试过这样的东西:
$(document).ready(function() {
$('#upload-media-button').on('click touchstart', function(){
dropperForm = document.getElementById("upload-form");
dropperForm.className = '';
isUploadFormVisible = 1;
$("body").addClass("modal-open");
});
}
但这仍然不起作用。
编辑:
尽管答案帮助我解决了这个问题,但这只是一个短暂的解决方案:这绝对令人难以置信,我真的很困惑如何让那些该死的按钮工作。我什么都试过了。
通过调查这个问题,我发现这个问题从未出现在桌面上(关闭和打开静态文件压缩(,然而,在移动设备上,压缩确实起到了作用,因为没有它,它可以正常工作。
这项调查的结论很清楚:检查您的代码是否存在语法错误。我丢失了十几个分号,控制台没有任何抱怨(事实上,它在桌面上运行良好,没有压缩(。
无论如何,如果你像我一样使用压缩,请确保从压缩文件中获取源代码,并通过JSHint(或任何对你有用的东西(运行它,以检查语法错误。
现在我明白为什么人们讨厌JS了。
没有href
属性的<a>
标记不是触摸屏的点击目标。
添加href="#"
(使用合适的event.preventDefault();
调用(或href="javascript:void(0);"
,使其成为一个实际的、可点击(可点击(的东西。