通常会发生这种情况,因为您正在将一个事件处理程序绑定到另一个事件处理程序中。例如,如果您要绑定pagechange
a 内的事件处理程序pageshow
事件处理程序。
另外,如果您想绑定到特定页面的页面事件,您可以只绑定到data-role="page"
元素:
$(document).delegate('#my-page-id', 'pageshow', function () {
//now `this` refers to the `#my-page-id` element
});
Update
我刚刚看到您使用额外代码更新的答案以及您的问题is您正在将一个事件处理程序绑定到另一个事件处理程序中。基本上每次pagechange
事件正在触发,一个新的事件处理程序被绑定到#name
元素。
尝试这个:
$(document).delegate('#name', 'keypress', function () {
if (e.keyCode == 13) {
var code = this.value;
$.ajax({
url: '/Consulta/ObterDadosPulseira',
data: $(this).serialize(),
success: function (data) {
$('#info').css('visibility', 'visible');
var info = $('#info')[0];
$('#info [id=gridCod]').html(data[0].cod);
$('#info [id=gridName]').html(data[0].nome);
},
complete: function () { },
error: function () { alert('error!'); }
});
this.value = '';
}
}).bind('pagechange', function () {
$('#info').css('visibility', 'hidden');
$('#name').focus();
});
这使用事件委托将事件处理程序绑定到#name
元素,这样事件处理程序将永远绑定一次。
文档用于.delegate()
: http://api.jquery.com/delegate http://api.jquery.com/delegate