【发布时间】:2011-02-22 23:16:06
【问题描述】:
大家好, 我有一个在页面上查找匹配字符的输入字段。此页面仅列出锚链接。因此,在键入时,我不断地 load()(使用 jquery load() 方法)此页面以及所有链接,并检查匹配的字符集。如果找到匹配的链接,它将显示给用户。但是,所有这些链接都应该有 e.preventDefault() 。
它根本行不通。 #found 是显示匹配元素的容器。所有被点击的链接都应该有 preventDefault() 。
编辑:
/*Animated scroll for anchorlinks*/
var anchor = '',
pageOffset = '',
viewOffset = 30,
scrollPos = '';
$(function() {
$("a[href*='#']").each(function() {
$(this).addClass('anchorLink');
$(this).bind('click', function(e) {
e.preventDefault();
//console.log('test');
anchor = $(this).attr('href').split('#')[1];
pageOffset = $("#"+anchor).offset();
scrollPos = pageOffset.top - viewOffset;
$('html, body').animate({scrollTop:scrollPos}, '500');
})
});
});
好吧,我正在寻找所有包含# 的href。所以我知道这些元素是跳转到其他元素的锚。我不希望我的页面跳转,而是使用这个特定的#id 平滑滚动到这个元素。
当我将bind('click', ... 用于打开页面时已加载的普通页面元素时,这可以正常工作。它不适用于通过 ajax 加载的锚点!如果我将 bind 更改为 live ajax 加载的元素没有任何变化 - 它们仍然不起作用。然而,一直在页面上的普通锚也不会触发该功能。所以 live() 没有任何作用!
【问题讨论】:
-
你能在某个地方(用你的 ajax 位)进行测试吗?它在所有浏览器中都失败了吗?