我正在尝试记录对异步生成的锚点的点击。
异步调用——效果很好——看起来像这样:
 $("#txt_search").keyup(function() {
    var search = $("#txt_search").val();
    if (search.length > 0)
    {
      $.ajax({
        type: "post",
        url: "<?php echo site_url ('members/searchmember') ;?>",
        data:'search=' + search,
      success: function(msg){
        $('#search_results').html("");
        var obj = JSON.parse(msg);
        if (obj.length > 0)
        {
          try
          {
            var items=[];   
            $.each(obj, function(i,val){                      
                items.push($('<li class="search_result" />').html(
                  '<img src="<?php echo base_url(); ?>' + val.userImage + ' " /><a class="user_name" href="" rel="' + val.userId + '">'
                  + val.userFirstName + ' ' + val.userLastName 
                  + ' (' + val.userEmail + ')</a>'
                  )
                );
            }); 
            $('#search_results').append.apply($('#search_results'), items);
          } 
          catch(e) 
          {   
            alert(e);
          }   
        }
        else
        {
          $('#search_results').html($('<li/>').text('This user does not have an account yet'));   
        }   
      },
      error: function(){            
        alert('The connection is lost');
      }
      });
    }
  });
我想要到达的锚点是<a class="user_name" href="" rel="' + val.userId + '">' + val.userFirstName + ' ' + val.userLastName + ' (' + val.userEmail + ')</a>'
我使用此功能检测对这些锚点的点击:
  // click op search results
  $("a.user_name").on('click', function(e) {
    e.preventDefault(); 
  });
问题似乎preventDefault是没有做任何事情......我已经在 Stackoverflow 上查看了大多数涉及此问题的问题,并检查了 jQuery 自己关于该主题的文档,但我似乎无法找到问题所在。我尝试async: false在 AJAX 调用中添加一条语句,因为异步调用可能是问题所在,但这并没有解决问题。