Jquery点击不使用ipad

Atc*_*ani 39 safari jquery ipad

我们有一个Web应用程序,它使用Jquery blockUI来打开弹出窗口并执行一些操作.所有这一切在Safari上运行良好,IE 8问题在于Ipad.弹出窗口中的所有操作都没有响应.它只停留在那个页面上.即便关闭也行不通.我们需要添加其他东西吗?这是打开页面并单击事件以进行关闭的代码.

<script>
$(document).ready(function() {
  $.ajaxSetup( {
           cache:false
   });

        $("#sendInviteDiv").load("invite.htm?action=view&pid="+pid);
            $.blockUI({ message: $('#sendInviteDiv'),
                centerY: 0,
                    css: {
                top:  ($(window).height() - 550) /2 + 'px',
                        left: ($(window).width() - 870) /2 + 'px',
                        width: '870px'
                }
            });
            //var ua = navigator.userAgent;
            //var event = (ua.match(/iPad/i)) ? "touchstart" : "click";
            //alert(ua);

            $('#closeInvite').click($.unblockUI);

    $('#inviteBtn').click(function() {
//script to load 
       //setPositionDetails('${formName}','inviteBtn');

       });
}


});


</script>
Run Code Online (Sandbox Code Playgroud)

感谢指针.

启用了javascript,并在Ipad Safari设置中允许弹出窗口.

Ric*_*haw 83

我经常使用

.bind("click touchstart", function(){

});
Run Code Online (Sandbox Code Playgroud)

代替:

.click(function(){

});
Run Code Online (Sandbox Code Playgroud)

这样你就可以绑定正确的事件.它也更快,由于某种原因,触摸响应速度比点击快得多.

  • 在我的情况下,我不得不使用绑定("点击",...) (14认同)
  • 我也发现`$('v').on('touchstart'...)`在点击,点击和触摸的地方不工作.当元素单独注册时,肯定有('点击')工作.`touchstart`并不理想,因为当你期望滚动但碰巧碰到元素时会发生这种情况. (4认同)
  • 绑定到'touchstart'似乎做了伎俩,触摸或点击不适合我? (2认同)

lac*_*e_h 37

我知道这是很久以前的问题,但我在寻找这个确切的问题时找到了答案.

有两种解决方案.

您可以在html元素上设置空的onlick属性:

<div class="clickElement" onclick=""></div>
Run Code Online (Sandbox Code Playgroud)

或者您可以通过设置指针光标在css中添加它:

.clickElement { cursor:pointer }
Run Code Online (Sandbox Code Playgroud)

问题是在ipad上,第一次点击非锚元素会注册为悬停.这不是一个真正的错误,因为它有助于那些没有平板/移动优化的悬停菜单的网站.设置光标或添加空的onclick属性会告诉浏览器该元素确实是一个可点击区域.

(通过http://www.mitch-solutions.com/blog/17-ipad-jquery-live-click-events-not-working)

  • 即使我将div标签更改为标签,我也必须添加一个空的onclick.只是一个标签似乎没有触发点击. (3认同)

BBi*_*Bi7 23

更新:我切换.bind到,.on因为它现在是jQuery的首选方式.

从jQuery 1.7开始,该.on()方法是将事件处理程序附加到文档的首选方法.jquery.com

例:

$('.button').on("click touchstart", function() {

});
Run Code Online (Sandbox Code Playgroud)

下面是clickand touchstart事件的最终版本,因为即使在加载DOM之后添加的新DOM对象仍然会触发它.为任何场景添加此终极点击事件解决方案.

$(document).on("click touchstart", ".button", function () {

});
Run Code Online (Sandbox Code Playgroud)


小智 7

请改用bind功能.让它更友好.

例:

var clickHandler = "click";

if('ontouchstart' in document.documentElement){
    clickHandler = "touchstart";
}

$(".button").bind(clickHandler,function(){
    alert('Visible on touch and non-touch enabled devices');
});
Run Code Online (Sandbox Code Playgroud)