$('body').on('click', '.anything', function(){})
VS
$('.anything').click($.proxy(function(event) {});
我可以使用 android 设备中的$('body').on('click', '.anything', function(){})
执行点击功能,但同样在 iOS 设备中无效。实际上我正在使用cordova来开发我的应用程序
答案 0 :(得分:5)
似乎在iOS上,如果浏览器没有遇到正式可点击元素,则不会生成点击事件。因此,例如A
标记始终生成点击事件,而body
或div
可能不生成。
解决方法是设置适用于至少某些元素的CSS规则cursor: pointer;
。
所以你可以试试
body{
cursor: pointer;
}
或
.anything{
cursor: pointer;
}
在你的CSS中然后查看它是否会触发。
答案 1 :(得分:0)
最好将触摸事件用于Web应用程序。因为触摸事件比点击事件更快。
尝试:
$('body').on('touchend', '.anything', function(){
console.log('don\'t touch this. too do do do');
})
答案 2 :(得分:0)
请使用ontouchend
请勿使用onclick
。 onclick
无法在某些Android设备上运行。
答案 3 :(得分:0)
我在我的iOS应用程序上插入了WKWebView。 我在WKWebView Delegate上监视js方法。
它不能以下列方式工作:
$('body').on('click', '#div', function(){})
它可以通过以下方式工作:
$('#div').click(function(event) {});
==========================================
PS: 方法1:
<html>
<body>
<div class="test"></div>
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="test3.js"></script>
</body>
$(document).ready(function(){
$('button').click(function() {
console.log("It worked");
});
$('.test').html('<button>Test</button>');
});
这里我们将.click方法附加到按钮,但是如果你看html按钮还不存在,那么我们将.click方法附加到一个不存在的元素。然后将按钮元素添加到.test类中,但不会将.click方法绑定到它。因此,如果您确实加载了此页面并尝试单击测试按钮,则无法执行任何操作。
方法2:
<html>
<body>
<div class="test"></div>
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="test3.js"></script>
</body>
$(document).ready(function(){
$('body').on('click', 'button', function() {
console.log("It worked");
});
$('.test').html('<button>Test</button>');
});
这会注销“它有效”。
答案 4 :(得分:0)
不是我的解决方案,但是效果很好...
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"sourceMap": true
}