我有以下代码:
//------------------------------------------------------//
// When the document is ready, start firing our AJAX //
//------------------------------------------------------//
$(document).ready(function() {
$("#navIndex a").click(function() {
this.blur();
return false;
});
$("#navPrevNext a").click(function() {
this.blur();
return false;
});
// Bind actions...
$("#navIndex a").click(function(e) { e.preventDefault; updateNavigation($(this).attr('href')); });
$("#navPrevNext a").click(function(e) { e.preventDefault; updateNavigation($(this).attr('href')); });
(); });
});
//--------------------------------------------------------------------------//
// METHODS - Get the params from the page and execute a server side call //
//--------------------------------------------------------------------------//
function updateNavigation(pageIndex) {
var filters = $("form").serialize();
var productGroup = $("#valProductGroup").attr('title');
var productType = $("#valProductType").attr('title');
var itemsPerPage = $("#ItemsPerPage").val();
var menuString = $("#Navigation").html();
// repopulate the paging menu...
$.ajax({ url: "/Catalog/Ajax/Update/Navigation"
, type: 'GET'
, dataType: 'HTML'
, data: { productGroup: productGroup, productType: productType, itemsPerPage: itemsPerPage, pageIndex: pageIndex, filters: filters }
, success: function(results) { $("#Navigation").html(results) }
, failure: function(results) { $("#Navigation").html(oldMenuString) }
});
// stop event bubbling... (this is not working as expected?)
return false;
}
该页面位于http://staging1.roomsalive.com/Catalog/Flooring/Hardwood。页面导航(第一页/上一页/ 1/2/3 /下一页/最后一页)是我正在处理的。当我第一次进入页面并单击“ 2”或“ 3”时,它的行为符合我的预期。刷新菜单后,我然后单击其他任何可行的选项,例如“ 3”,它将发布到http://staging1.roomsalive.com/Catalog/Flooring/Hardwood/3而不是执行JQuery调用。我99%的确定这是因为加载文档时,我将JQuery click事件附加到菜单上。但是,当它回发时,这些事件丢失了。我该如何重新划定他们?那是问题吗?
TIA
最佳答案
我可以想到两个原因,也许都需要解决。如果要在更新导航时用附加的单击处理程序替换元素,则需要重新应用处理程序,或使用实时绑定自动将处理程序绑定到与选择器匹配的任何当前或将来的元素。
$("#navIndex a").live('click', function() {
this.blur();
return false;
});
其次,当您在调用AJAX的方法中返回false时,您不会将该值传播回调用链。确保您的click函数返回updateNavigation方法的结果。或简单地返回false。
$("#navIndex a").live('click', function(e) { e.preventDefault; return updateNavigation($(this).attr('href')); });