非同期で生成されているアンカーのクリックをログに記録しようとしています。
完全に正常に動作する非同期呼び出しは、次のようになります。
$("#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 独自のドキュメントを確認しましたが、何が問題なのかを見つけることができないようです。おそらく非同期呼び出しが問題である可能性があるため、AJAX呼び出しにステートメントを追加しようとしましたasync: false
が、それは修正されませんでした。