0

次のコードがあります。

<input class="span7" type="text" id="search" name="search">
<div class="well" id="search-results" style="position: absolute;
          top: 208px;
          left: 62px;
          height: 100px;
          width: 340px;
          overflow:
          auto;">
    <ul id="list-results" style="margin: 0; padding:0; top: 0;">
    {% include 'search-results.html' %}
    </ul>
</div>

入力フィールドでキーアップが行われると、search-result.html が ajax 経由で表示されます。ajax リクエストは、次のような要素を ul に追加します。

<li id="{{article.id}}"><a id="result-selected" href="#">{{ article.title }}</a></li>

この関数を使用すると動作します (コンソールに表示されます):

$('#list-results').click(function(e){
      console.log($(this));
  });

代わりにこれらのいずれかを選択すると、次のようになりません。

$('#list-results ul')
$('#list-results > ul')
$('#result-selected')
and more...

この html は ajax によってレンダリングされますが、ページがロードされたときに物乞いではないということは問題ですか? 私に何ができる?表示された a の値を取得して何かをしたい。

Ajax 呼び出し:

$('#search').keyup(function(){

      $.ajax({
          type: "POST",
          url:"/meal/search/",
          data:{
              'search_text': $('#search').val(),
              'csrfmiddlewaretoken': $('input[name=csrfmiddlewaretoken]').val()
          },
          success: searchSuccess,
          dataType: 'html'

      }

      );
  });

  function searchSuccess(data, textStatus, jqXHR){

      if ($('#search').val().length < 3){
        $('#search-results').hide();
      } else {
        $('#search-results').show();
      }

      $('#list-results').html(data);

  }
4

4 に答える 4

1

動的クリック機能を使用している場合

on('click', function ..) or live('click', function())

関数をライブ クリックに変更する

$('#list-results ul').live('click', function(e){
  console.log($(this));
});
于 2013-07-16T05:57:56.650 に答える
1

jQuery 1.7 以降、.live() メソッドは非推奨になりました。.on() を使用して、イベント ハンドラーをアタッチします。古いバージョンの jQuery のユーザーは、.live() よりも .delegate() を使用する必要があります。

$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+
于 2013-07-16T06:41:34.613 に答える