0

これはあまりにも基本的な質問かもしれませんが、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);

});

ご協力いただきありがとうございます!

4

2 に答える 2

3

同じIDを持つ要素を複数持つことはできません。一意である必要があります。#immos代わりにクラスを作成してください。

jquery 1.8には、セレクターエンジンであるSizzleの新しいバージョンが含まれています。1.7で動作するとおっしゃっていますが、その意味では新しいバージョンの方が厳しいと思います。#immosパフォーマンス上の理由から、Sizzleは、一意であると想定しているため、要素が見つかるとすぐにドキュメントのトロールを停止します。

于 2012-09-17T10:33:56.813 に答える
3

同じ ID 'immos' を持つ複数の要素を定義しています。HTML ドキュメントの各要素には、明示的な ID が必要です。代わりにクラスを使用し、クラス セレクターを使用してください。例えば:

<li class="immos" ...

そしてJQueryセレクター:

$('#immo_list').on('click', '.immos', ...
于 2012-09-17T10:33:08.920 に答える