我正在开发一个相对简单的 jQuery 移动网站,它通过 AJAX 调用与我的服务器交互,然后根据返回的值更新列表视图。动态更新工作正常,但该click
事件似乎没有绑定到移动浏览器上的动态列表项。(在 Android 和 iOS 中的结果相同)但在桌面上的 Chrome、Firefox 和 Safari 中都可以正常工作。
这是填充我列表的代码(适用于桌面和移动设备):
$('#searchfield').keypress(function(e) {
if( $(this).val().length > 3 ) {
$.getJSON('admin.php?request=search&srch_email=' + $(this).val(), function(data) {
if( data.status == 'success' ) {
$('#results').empty();
$.each(data.data, function(count,user) {
$('#results').append('<li><a href="#profile_' + user.uid + '" class="profile">' + user.first_name + ' ' + user.last_name + ' (' + user.email + ')</a></li>');
$('#results').listview('refresh');
users[user.uid] = user;
});
}
});
}
else if($(this).val().length == 0 ) {
$('#results').empty();
}
});
绑定我最初尝试的事件:
$('.profile').live('click', function(e) {
e.preventDefault();
var parts = $(this).attr('href').split("_");
var user = users[ parts[1] ];
$('#pheader').html('Edit User ' + user.email );
$('#fname').val(user.first_name);
$('#lname').val(user.last_name);
$('#zip').val(user.zipfirst);
$('#state').val(user.state);
$('.uid').val(user.uid);
$.mobile.changePage( $('#profile') );
$('#searchfield').val("");
$('#results').empty();
});
那没有用,所以我读到它.live()
可能无法在移动设备上正常工作,.on
现在是首选方法。我将上面的第一行更改为:
$('#results').on('click',".profile", function(e) {
虽然结果相同。
当我说它失败时编辑它是按钮根本没有响应。没有控制台错误,它就像它不是一个可点击的按钮。