【问题标题】:mootools click:relay not firing on ipad/iphonemootools click:relay 没有在 ipad/iphone 上触发
【发布时间】:2012-08-31 10:57:18
【问题描述】:

我只是用mootools创建一个点击事件如下:

$$('body').addEvent('click:relay(div.smart-bg)', function(){

xxxxxxxxxxx

});

但是,这似乎不会在 iPad 上触发(而其他点击事件会触发)。这是否与它是添加的动态元素并且我正在使用 :relay 的事实有关?

非常感谢任何指针。

广告。

【问题讨论】:

  • 能否提供一个测试用例?这是在 iPad 上工作的人:jsfiddle.net/EvBNQ/1
  • 您为什么使用$$('body')?没有理由遍历 DOM 来查找单独的 body 标签,尤其是当它已经作为 document.body...!

标签: javascript mootools


【解决方案1】:

当我在 div 上添加委托点击事件时,我遇到了类似的问题。

This article from quirksmode 可能会有所帮助:

这种行为一定是有原因的。我不知道那是什么原因,但目前我认为这是一个内存管理问题。显然,让页面上的所有元素都可点击需要太多资源,Apple 工程师决定禁用它。

还有……

幸运的是,这很容易解决:您必须通过给它自己的 onclick 事件处理程序来使元素可点击。该处理程序可以为空;只要它存在,它就会使任何元素都可以点击。

也许在你的情况下......

$$('.smart-bg').each(function(el) {
    el.onclick = function() {};
});

当然,鉴于它是一个委托事件,您必须确保在您动态创建的每个 .smart-bg 元素上重新创建 onclick 处理程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2012-02-17
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多