iOS将javascript函数绑定到单击<;html>;

iOS将javascript函数绑定到单击<;html>;,javascript,jquery,html,ios,Javascript,Jquery,Html,Ios,这在桌面safari中有效,但在iOS版本中不会弹出警报。是否可以绑定到iOS中的“html”元素?每当用户单击页面上的其他位置时,我想关闭一个下拉菜单 $('html').bind("click", function(){alert("clicked!")}) 编辑 由于jsfiddle嵌入到iframe中,所以将其作为html发布,这显然解决了我的问题。在桌面safari上打开此页面可以正常工作,但在iOS模拟器中,单击时不会显示任何内容 <html> <head&g

这在桌面safari中有效,但在iOS版本中不会弹出警报。是否可以绑定到iOS中的“html”元素?每当用户单击页面上的其他位置时,我想关闭一个下拉菜单

$('html').bind("click", function(){alert("clicked!")})
编辑

由于jsfiddle嵌入到iframe中,所以将其作为html发布,这显然解决了我的问题。在桌面safari上打开此页面可以正常工作,但在iOS模拟器中,单击时不会显示任何内容

<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
      $(document).ready(function(){  
        $('html, body').bind("click", function(){alert("html or body")})
        $(document).bind("click", function(){alert("document")})
      });
    </script>
  <body>
  </body>
</html>

$(文档).ready(函数(){
$('html,body').bind(“单击”,函数(){alert(“html或body”)})
$(document).bind(“单击”,函数(){alert(“document”)})
});
编辑2

这在iOS模拟器或iPhone上也不适用。如果我将委托()放入我的应用程序并单击链接,我确实会收到警报

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<body>
</body>
<script type="text/javascript">
  $(document).delegate('html, body', "click", function(){alert("html or body")});
</script>
</html>

$(document).delegate('html,body',“click”,function(){alert(“html或body”)});
编辑3

这管用

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<body>
  <div id="stuff">applesauce</div>
  <div>other stuff</div>
</body>
<script type="text/javascript">
  $(':not[#stuff]').on( "click", function(){alert("not stuff")});
</script>
</html>

苹果酱
其他东西
$(':not[#stuff]')。打开(“单击”,函数(){alert(“not stuff”)});

使用
文档
正文
元素而不是
html

    $(document).bind("click", function(){
          alert("clicked!")
    });
你也可以试试这个

    $('html, body').bind("click", function(){
          alert("clicked!")
    });
jQuery.click()在iOS上无法正常运行。我怀疑bind()也有同样的问题。然而,jQuery.delegate()确实有效

$('html').delegate('body', 'click', function(){ alert("body"); });
应该对你有用。想必on()也会起作用,但我还没有机会尝试

另一方面,您应该将该脚本块移动到body标记下面,并丢失$(document).ready()

更新:在jQuery的任何最新版本中,on(事件、选择器、函数)都是一个不错的选择。它可以在IOS上工作,并阻止泄漏事件处理程序

$('body').on('click', ':not[#stuff]', function(){ alert("not stuff"); });

你试过用$('body')来代替吗?为什么$('body')可以代替呢?是否有一个引用说要在body上侦听?我没有任何引用,但每个设备处理javascript的方式略有不同,因此iOS可能会稍微不同地使用$('html')。我只是查看了jquery代码,并在初始化中发现了这一点,如果(selector==“body”&&!context&&document.body){…}。“html”没有类似之处,因此我假设他们会将该部分留给设备,而不是像处理身体一样手动处理。如果这是一个jQuery问题,我会感到惊讶,而您链接的代码部分似乎只是对选择器进行了优化。我面前没有iPad,因此无法检查。但我认为目标也很重要。请尝试我上面的编辑。如果您试图捕获页面上的任何单击,则这可能不起作用。由于触摸界面,Safari做了一些奇怪的事情来解释你的手指实际上在做什么。当我需要在单击时关闭一个元素时,我使用了一个选择器“NottheElementShowed”而不是body,这很好,没有骰子。我尝试了$('html')。在('click','body',…)上也没有用(在桌面上工作,所以我认为我做对了)。有没有什么地方可以让我读到这些iOS问题?酷。为完整起见,我可能还应该注意,在事件处理程序中,您必须检查父级(elementSelector)是否也返回空集。因为单击弹出窗口中的DOM元素也会触发“单击”。jQuery在过去18个月里发展了很多。让我调整一下我的答案