单击后,jQuery click事件停止工作

时间:2012-06-17 19:41:51

标签: jquery load click live

我有一个div(#replyLoop),当点击它时,链接ID lmor 会从href元素 data-posts 中提取内容。第一次单击时工作正常,但之后无效。我怀疑它与代码的结构有关,而不是与使用的事件有关 - “live”和“click”都有相同的结果,删除return false也是如此;并且只使用链接的data-posts元素并删除href部分。 (返回false;禁用链接的href从触发)。

当谈到js时,我似乎总是想念最明显的事情 - 我想知道这是不是这样。

(tooltip-e确保在加载新内容时调用 tipsy 函数。(工具提示))

“实时”标记 -

$(function(){
$("#lmor").live("click",function() {
    $('#replyLoop').load($(this).attr('data-posts'), function(data) {
            $('.tooltip-e').tipsy({
            gravity: 'e',
            fade: true,
            html: true
            });
        });
        return false;
    });
});

“点击”标记 -

$(function(){
$("#lmor").click(function() {
    $('#replyLoop').load($(this).attr('data-posts'), function(data) {
            $('.tooltip-e').tipsy({
            gravity: 'e',
            fade: true,
            html: true
            });
        });
    return false;
    });
});

关于我缺少的任何想法?

修改 我想通了 - 使用.live的组合并在相应的文件中包含“加载更多”,我已经让它工作了。

问题:它正在被加载的页面之外调用 - 所以当它正在寻找“下一页”时,该“下一页”页面还没有被推送到链接,因为它没有知道它已被装载。

我还标记了使用'而不是's的实时代码。感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果我们不需要猜测会更容易回答,但这是我的猜测:当你第一次点击时加载到#replyLoop的html中是#lmor吗?我想是的,问题是$(“#mmor”)。live在DOM元素#lmor上设置,然后当你加载新内容然后删除那个dom元素并创建一个新元素。做到这一点的方法是:

$(document).on("click", "#lmor", function...);

这样当你创建新的#lmor时(加载新内容时),它也会获得事件监听器。

优化版可能是:

$("#replyLoop").on("click", "#lmor", function...);

如果#lmor在#replyLoop