$('body')。on('click','。anything',function(){})不适用于iOS

时间:2016-01-14 10:22:07

标签: javascript jquery cordova

$('body').on('click', '.anything', function(){})

VS

$('.anything').click($.proxy(function(event) {});

我可以使用 android 设备中的$('body').on('click', '.anything', function(){})执行点击功能,但同样在 iOS 设备中无效。实际上我正在使用cordova来开发我的应用程序

5 个答案:

答案 0 :(得分:5)

似乎在iOS上,如果浏览器没有遇到正式可点击元素,则不会生成点击事件。因此,例如A标记始终生成点击事件,而bodydiv可能不生成。

解决方法是设置适用于至少某些元素的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请勿使用onclickonclick无法在某些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
   }