【问题标题】:jQuery events and .load()jQuery 事件和 .load()
【发布时间】:2026-02-11 09:45:01
【问题描述】:

以前从未遇到过 jQuery 的这个问题。我有以下内容:

$(document).ready(function() {
    $('#browser_cat a').click( function() {
        $('#browser_cat').hide();
        $('#browser_cat').load('/api/browser/catchildren/'+$(this).attr('id'));
        $('#browser_cat').fadeIn();
        return(false);
    })
});

很简单的东西。它可以工作,但是.load() 收集的数据不会重新触发事件。这是一个向下钻取类别类型的东西......所以 level-1 执行加载,但随后 2 级保释到 href,而不是再次触发 click() 事件。

加载的HTML是一个带有链接的#browser_cat,生成的DOM是OK的。

我知道这是基本的。提前致谢。


回答修改后的代码:

$(document).ready(function() {
    $('#browser_cat a').live("click", function() {
        $('#browser_cat').hide();
        $('#browser_cat').load('/api/browser/catchildren/'+$(this).attr('id'));
        $('#browser_cat').fadeIn();
        return(false);
    })
});

【问题讨论】:

    标签: javascript jquery html dom


    【解决方案1】:

    使用live事件

    为所有事件附加一个处理程序 与当前匹配的元素 选择器,现在或将来。

    替换

    $('#browser_cat a').click( function() {
    

    $('#browser_cat a').live("click", function() {
    

    【讨论】:

    • +1 并接受。谢谢拉胡尔。正是我所追求的;我想我应该 RTFM。我也认为我应该从 1.2.3 更新 jQuery :S