jquery:将单击事件绑定到ajax加载的elmente?live()元';不行?

jquery:将单击事件绑定到ajax加载的elmente?live()元';不行?,ajax,load,live,jquery,Ajax,Load,Live,Jquery,嘿,伙计们, 我有一个在页面上查找匹配字符的输入字段。此页面仅列出锚链接。因此,在键入时,我会不断加载()这个包含所有链接的页面(使用jquery load()方法),并检查匹配的字符集。如果找到匹配的链接,则会显示给用户。但是,所有这些链接上都应该有e.preventDefault() 这根本行不通#found是显示匹配元素的容器。所有单击的链接上都应该有preventDefault() 编辑: 嗯,我正在查找所有包含#的href。所以我知道这些元素是跳转到其他元素的锚。我不希望我的页面跳转,

嘿,伙计们, 我有一个在页面上查找匹配字符的输入字段。此页面仅列出锚链接。因此,在键入时,我会不断加载()这个包含所有链接的页面(使用jquery load()方法),并检查匹配的字符集。如果找到匹配的链接,则会显示给用户。但是,所有这些链接上都应该有e.preventDefault()

这根本行不通#found是显示匹配元素的容器。所有单击的链接上都应该有preventDefault()

编辑:

嗯,我正在查找所有包含#的href。所以我知道这些元素是跳转到其他元素的锚。我不希望我的页面跳转,而是希望使用这个特定的#id平滑地滚动到此元素

当我使用
bind时,这很好用('click',…
用于在页面打开时加载的普通页面元素。对于通过ajax加载的锚固件,它不起作用!如果我将
bind
更改为
live
则ajax加载的元素不会发生任何变化-它们仍然不起作用。但是,始终在页面上的普通锚固件不起作用同时升级该函数。因此,当您说“它将不工作”时,live()不起作用。

你的意思是你的函数没有被调用,或者你不能取消该函数?据我所知,你不能取消实时事件。在jQuery 1.4中,你可以使用return false取消实时事件传播。调用e.preventDefault()将不起作用

编辑:是的,所以这段代码应该在主要工作中。它仍然不会做的是,它不会将“anchorLink”类添加到您的新锚。但是,如果单击成功,请告诉我,我也会给您添加该类的正确代码

var anchor = '',
    pageOffset = '',
    viewOffset = 30,
    scrollPos = '';
$(function() {
    $("a[href*='#']").each(function() {
        $(this).addClass('anchorLink');
    });


    $("a").live('click', function(e) {
        if ($(this).attr("href").indexOf("#") > -1) {
            e.preventDefault();
            //console.log('test');
            anchor = $(this).attr('href').split('#')[1];

            pageOffset = $("#" + anchor).offset();

            scrollPos = pageOffset.top - viewOffset;
            $('html, body').animate({ scrollTop: scrollPos }, '500');
            //nikhil: e.preventDefault() might not work, try return false here
        }
    });
});

你能在某个地方(用你的ajax位)进行测试吗?它在所有浏览器中都失败了吗?我使用的是jquery 1.5,看起来这个实时事件根本不起作用!它不仅会被ajax加载的元素触发,而且根本不会被触发。如果我在所有锚链接上测试我的函数,它不会触发函数。如果我使用bind()是的。我只需要能够在某些特定链接上调用一个函数——无论它们在加载页面时是否在dom中,或者是否使用ajax加载。老实说,选择器在我看来很奇怪。你能复制你试图绑定的某个UI元素的过去标记吗?当然它不会工作:)你的代码有一些地方有点问题。我正在修改我的原始答案,给你一个我认为应该有效的示例代码。试试看。嗨,不确定我的代码是否有用,但如果有用,你能检查一下复选框,表明你接受了我的答案吗?谢谢!
var anchor = '',
    pageOffset = '',
    viewOffset = 30,
    scrollPos = '';
$(function() {
    $("a[href*='#']").each(function() {
        $(this).addClass('anchorLink');
    });


    $("a").live('click', function(e) {
        if ($(this).attr("href").indexOf("#") > -1) {
            e.preventDefault();
            //console.log('test');
            anchor = $(this).attr('href').split('#')[1];

            pageOffset = $("#" + anchor).offset();

            scrollPos = pageOffset.top - viewOffset;
            $('html, body').animate({ scrollTop: scrollPos }, '500');
            //nikhil: e.preventDefault() might not work, try return false here
        }
    });
});