【问题标题】:jQuery $.live() doesn't work with table rows on the iPhonejQuery $.live() 不适用于 iPhone 上的表格行
【发布时间】:2011-03-05 14:04:17
【问题描述】:

我正在使用 jQuery 的 $.live() 函数制作可点击的表格行。
在 Chrome、Firefox 甚至桌面版 Windows Safari 上完美运行——但在 iPhone 上却不行。
$.bind() 可以在任何地方使用,但出于显而易见的原因,我想使用其他功能。

有谁知道为什么它不起作用以及如何解决它?
示例代码如下。

<!DOCTYPE html>
<html lang="en">
<head>
 <title>test</title>
 <meta charset="utf-8" />
 <meta name="viewport" content="user-scalable=no,width=device-width" />
 <meta name="apple-mobile-web-app-capable" content="yes" />
 <style type="text/css">table { width: 100%; border-collapse: collapse; } table tr {     background: #eee; } table td { padding: 10px; border-top: 1px solid #ccc; }</style>
 <script type="text/javascript" src="http://jquery.com/src/jquery-latest.pack.js">        </script>
 <script type="text/javascript">
$(document).ready(function() {
  /* $.bind() works */
  /*
  $('table').find('tr').bind('click', function() {
    alert($(this).text());
  });
  */
  /* $.live() doesn't */
  $('table').find('tr').live('click', function() {
    alert($(this).text());
  });
});
 </script>
</head>
<body>
 <table>
  <tbody>
   <tr><td>words are flying out \ </td><td>like endless rain into a paper cup</td></tr>
   <tr><td>they slither while they pass \ </td><td>they slip away across the             universe</td></tr>
  </tbody>
 </table>
</body>
</html>

【问题讨论】:

    标签: jquery iphone html-table rows live


    【解决方案1】:

    此代码的一个问题是您使用 .live 错误 - 应该直接在选择器上调用它:

    $('table tr').live( /* ... */)
    

    来自specs

    不完全支持 DOM 遍历方法来查找要发送到 .live() 的元素。相反,应始终在选择器之后直接调用 .live() 方法

    接下来,在 jQuery 1.4.2 上,使用delegate 可能会更好:

    $('table').delegate('tr', 'click', function(){/* ... */} );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 2016-04-23
      • 2015-01-18
      • 1970-01-01
      相关资源
      最近更新 更多