我试图覆盖锚标记的默认行为,这样我就可以将服务器上的网页加载到现有的div中,而不是新的标签或窗口。
到目前为止,我有:myContainer.click(function(){
event.preventDefault();
$('a').click(function(){
var link = $(this).attr('href');
myContainer.load(link);
});
});
在Chrome中,我必须在它执行任何操作之前单击链接两次,在IE中,它根本不起作用并使用新链接刷新页面。
非常感谢任何帮助。
答案 0 :(得分:25)
不应该只是:
$('a').click(function(e) {
e.preventDefault();
myContainer.load(this.href);
});
您的代码在点击处理程序中分配了一个点击处理程序。因此,第一次点击会将点击处理程序附加到链接,第二次点击(在链接上)将执行新的点击处理程序。
您似乎只需要一个点击处理程序。如果动态添加链接,您可以使用.on()
(.live
和.delegate
的后续版本):
myContainer.on('click', 'a', function(e) {
e.preventDefault();
myContainer.load(this.href);
});
// or
$(document).on('click', 'a', function(e) {
e.preventDefault();
myContainer.load(this.href);
});
答案 1 :(得分:3)
你忘了通过活动:
myContainer.click(function(event){
event.preventDefault();
$('a').click(function(){ var link = $(this).attr('href');
myContainer.load(link);
});
});
尝试重新安排它们:
myContainer.ready(function(){
$('a').click(function(event){
event.preventDefault();
var link = $(this).attr('href');
myContainer.load(link);
});
});