.on() jQuery 1.7 和 1.8 的区别



也许这是一个太基本的问题,但是jQuery 1.7+和1.8+中的.on()事件绑定有什么区别?我的问题如下:

我正在使用ASP MVC 3和jQuery Mobile 1.2 RC1动态创建一个列表,并将单击事件绑定到li元素。如果我使用 jQuery 1.7+,一切正常,但是当我使用 1.8+ 时,单击事件仅在第一个 li 元素上触发。我已经检查了jQuery的文档,但实际上应该没有区别,或者?

<ul data-role="listview" id="immo_list" data-inset="true" 
data-theme="c" data-dividertheme="b" data-filter="true">
  <%
      foreach (var immobilie in Model.immoObjekte)
                        {
  %>
      <li id="immos" val="<%: immobilie.id %>"> <a href="">
          <%: immobilie.strasse %> <%:immobilie.hausnummer%></a>
          <span class="ui-li-count"><%:immobilie.id%></span>
      </li> 
  <%
      }
  %>
  </ul>

$('#immo_list').on('click', '#immos', function () {
    $.mobile.loading('show');
    var immoid = $(this).attr('val');
    var days = $("#interval").val();
    sessionStorage.setItem("clicked", "false");
    sessionStorage.setItem("mode", "");
    sessionStorage.setItem("days", days);
    sessionStorage.setItem("immoid", immoid);
    getAndShowPflichten(immoid, days);
});

感谢您的帮助!

不能有多个具有相同 ID 的元素,它必须是唯一的。改为#immos类。

jquery 1.8包含新版本的Sizzle,他们的选择器引擎。正如您所说,它在 1.7 中有效,我想新版本在这个意义上更严格。出于性能原因,Sizzle将在找到元素后立即停止拖网文档#immos,因为它希望它是唯一的。

您正在定义几个具有相同 ID 'immos' 的元素。HTML 文档中的每个元素都必须具有显式 ID。请改用类,并使用类选择器。例如:

<li class="immos" ...

和 JQuery 选择器:

$('#immo_list').on('click', '.immos', ...

最新更新