刷新元素

jQuery: Refreshing an element

本文关键字:元素 刷新      更新时间:2023-09-26

我正在使用这个类似手风琴的脚本:

jQuery(document).ready(function () {
    jQuery(".content").hide();
    jQuery(".heading").click(function () {
        jQuery(this).next(".content").slideToggle(500)
    });
});

然后我添加了这一行,以便在内容div切换后重新加载元素…

document.getElementsByClassName(transition current).reload();

的结果,手风琴不再工作…始终显示content类。

为什么这一行会影响手风琴的行为?

我正在尝试刷新元素,同时保留手风琴样式div…

任何想法?

您需要使用事件委托,因为元素是动态创建的

jQuery(function ($) {
    $(".content").hide();
    $(document).on('click', ".heading", function () {
        $(this).next(".content").stop(true, true).slideToggle(500)
    });
});

你仍然可能有一个问题,所有的content元素显示一旦元素被重新加载,隐藏这些元素,你需要使用任何加载回调系统提供的你正在使用

这里有一个语法错误:

document.getElementsByClassName(transition current).reload();

getElementsByClassName期望传递一个字符串(更不用说上面的语法不正确,即使它期望两个参数)。您试图传递两个变量(您还没有定义)。传递一个字符串:

document.getElementsByClassName('transition current').reload();

。这也不行!阅读文档告诉我们,getElementsByClassName返回HTMLCollection,它没有reload()方法,导致另一个错误。你有没有看着控制台?

您可能会假设getElementsByClassName返回一个jQuery对象,在这种情况下,您可以用$('.transistion, .current').reload();

替换上面的内容

再次说明,reload()也不是原生jQuery方法。我假设你是通过插件带来的。如果我错了,请在下面评论,我会更新答案。

我使用的是isotype jQuery插件,所以这个问题是通过添加这一行作为回调来"布局"加载到DOM中的任何更改来解决的。

   $('#blog-list').isotope('reLayout');