Phonegap jQuery事件目标无法工作

6

我有一个PhoneGap-iOS应用程序,适用于iPad,用户会在下面的图片中看到退出弹出窗口。

Logout popup

当用户单击Body时,我希望此弹出窗口隐藏。 我的代码可以在本地浏览器上工作,但在上无法工作

$("body").ClickOrTouch(function (evt) {
    if (!(evt.target.id == "launchUsername") {
        $('#launchLogout').hide();
    }
});

你试过在真正的iDevice上测试吗? - Maen
我也在真实设备上进行了测试。 - Prasen
4个回答

3
在iPhone和iPad设备中,点击事件只会在锚点标签(anchor tag)中起作用,而不会在span或div标签中起作用。因此,请尝试使用锚点标签来解决这个问题。
$("body").on('click touchend', function (evt) {
  if (!(evt.target.id == "launchUsername") {
    $('#launchLogout').hide();
  }
});

2
$("body").on('touchend', function (evt) {
    if (!(evt.target.id == "launchUsername") {
        $('#launchLogout').hide();
    }else{
evt.stopPropagation();

}


});

2
也许在移动版Safari中可以使用event.touches[0].target(您有一个触摸数组以管理多点触控事件,一个接一个地进行)。 如此话题所讨论的: Mobile Safari - event.target in touch event 但我认为值得尝试jquery-ui-touch-punch
这是我用来管理移动Web应用程序(例如cordova/phonegap)上的jquery触摸事件的工具。
非常简单:只需添加此库,任何触摸事件都会像鼠标事件一样运行。
(触摸按下/抬起=>鼠标按下/抬起,单击=>点击等...)

我将尝试使用jquery-ui-touch-punch。但是当我在iPad模拟器上测试它时,我想知道上面的代码出了什么问题。 - Prasen
不确定是不是没有大写'C'的 'clickOrTouch'? - Guian
ClickOrTouch事件被执行。但是每次只有event.target显示为未定义。 - Prasen
是的,根据jQuery文档,目标应该进行跨浏览器规范化...来源:http://api.jquery.com/category/events/event-object/?rdfrom=http%3A%2F%2Fdocs.jquery.com%2Fmw%2Findex.php%3Ftitle%3DEvents%2FjQuery.Event%26redirect%3Dno#event.target - Guian
那么我该如何进行归一化呢?有什么建议吗? - Prasen
也许 event.touches[0].target 可以解决问题:在移动版 Safari 上,您可以通过手指触摸屏幕来获取一个触摸事件。有关此内容的更多信息,请参见以下答案:http://stackoverflow.com/questions/9580267/mobile-safari-event-target-in-touch-event - Guian

1

你尝试过不同的事件吗?也许像那样的东西?

$("body").on('touchend', function (evt) {
    if (!(evt.target.id == "launchUsername") {
        $('#launchLogout').hide();
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接