0

我有一个 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 而不是 "s。感谢您的帮助!

4

1 回答 1

1

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

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

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

一个优化的版本可能是:

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

如果#lmor 在#replyLoop 内

于 2012-06-17T20:17:57.540 回答