Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中生成与Gmail类似的折叠效果_Javascript - Fatal编程技术网

如何在JavaScript中生成与Gmail类似的折叠效果

如何在JavaScript中生成与Gmail类似的折叠效果,javascript,Javascript,我假设Gmail使用JavaScript实现了特定电子邮件线程的折叠效果。我所说的效果是:当你点击一个特定的电子邮件线程后,你会看到只显示最新的电子邮件,之前所有的电子邮件都处于折叠状态。只有在单击折叠部分时,它们才会展开,但仍然只显示其中的一个片段。然后单击每个单独的部分,您可以阅读完整的消息。怎么能这样呢?非常感谢。我假设您讨论的是线程中以前的邮件被折叠的效果,因此只显示发件人的姓名和邮件的前几个单词 方法:对于除未读邮件以外的所有邮件,加载发件人的姓名和正文的前n个字符。在表中显示所有以前

我假设Gmail使用JavaScript实现了特定电子邮件线程的折叠效果。我所说的效果是:当你点击一个特定的电子邮件线程后,你会看到只显示最新的电子邮件,之前所有的电子邮件都处于折叠状态。只有在单击折叠部分时,它们才会展开,但仍然只显示其中的一个片段。然后单击每个单独的部分,您可以阅读完整的消息。怎么能这样呢?非常感谢。

我假设您讨论的是线程中以前的邮件被折叠的效果,因此只显示发件人的姓名和邮件的前几个单词

方法:对于除未读邮件以外的所有邮件,加载发件人的姓名和正文的前n个字符。在表中显示所有以前的消息,每行上都有一个onclick侦听器。单击行时,使用Ajax从服务器检索完整消息,并用完整消息替换截断的消息。如果用户再次单击该行,则隐藏除前n个字符之外的完整消息。在GMail的例子中,当你点击一个电子邮件线程时,未读和/或最近的邮件会被完整加载


一种更简单的方法是:在页面加载时完整加载所有消息,但在单击行之前隐藏完整消息的所有字符(n个字符除外)。这将使编码变得更容易,因为您不必乱用Ajax和节省屏幕空间,但不会给您带来带宽使用更少的其他好处。

我假设您所说的效果是线程中以前的消息被折叠,因此只显示发送者的姓名和消息的前几个字

方法:对于除未读邮件以外的所有邮件,加载发件人的姓名和正文的前n个字符。在表中显示所有以前的消息,每行上都有一个onclick侦听器。单击行时,使用Ajax从服务器检索完整消息,并用完整消息替换截断的消息。如果用户再次单击该行,则隐藏除前n个字符之外的完整消息。在GMail的例子中,当你点击一个电子邮件线程时,未读和/或最近的邮件会被完整加载


一种更简单的方法是:在页面加载时完整加载所有消息,但在单击行之前隐藏完整消息的所有字符(n个字符除外)。这将使编码变得更容易,因为您不必乱用Ajax和节省屏幕空间,但也不会带来带宽使用量减少的其他好处。

使用jQuery非常简单,可以获得良好的视觉效果(如果您了解足够多的javascript和jQuery)。是将产生效果的函数

这与gmail对线程的作用非常相似。不同之处在于,手风琴一次只能打开一个部分,而在gmail中,可以同时打开多封邮件

因此,我建议您使用下面的手风琴示例中的代码,它允许同时打开多个部分,而不是手风琴控件本身

jQuery(document).ready(function(){
    $('.accordion .head').click(function() {
        $(this).next().toggle('slow');
        return false;
    }).next().hide();
});

使用jQuery非常简单,可以获得很好的视觉效果(如果您了解足够多的javascript和jQuery)。是将产生效果的函数

这与gmail对线程的作用非常相似。不同之处在于,手风琴一次只能打开一个部分,而在gmail中,可以同时打开多封邮件

因此,我建议您使用下面的手风琴示例中的代码,它允许同时打开多个部分,而不是手风琴控件本身

jQuery(document).ready(function(){
    $('.accordion .head').click(function() {
        $(this).next().toggle('slow');
        return false;
    }).next().hide();
});

你在说什么效果?你在说什么效果?gmail里没有手风琴效果。他说的不是视觉效果,他说的是信息的组织。事实上,我说gmail没有手风琴效果(因为有多个部分同时打开)。所以我们同意这一点。我们不同意的是OP的意图。我不知道你为什么这么肯定他说的是如何“加载”内容,而不是如何“显示”内容(问题中的“显示”是一个动词,而“加载”、“ajax”和“性能”根本没有提到)。gmail中没有手风琴效应。他说的不是视觉效果,他说的是信息的组织。事实上,我说gmail没有手风琴效果(因为有多个部分同时打开)。所以我们同意这一点。我们不同意的是OP的意图。我不知道你为什么这么肯定他说的是如何“加载”内容,而不是如何“显示”内容(问题中的“显示”是一个动词,而“加载”、“ajax”和“性能”根本没有提到).我不知道你为什么认为OP的目的是了解在需要之前不加载所有邮件的性能,而他却没有提到这些(如果你有这么多数据,这将非常重要,但我们不知道他处理了多少数据)。@Protron-你有什么观点吗?否则为什么要隐藏数据?释放屏幕空间或节省带宽。我提到了这两个方面。我不知道为什么你认为OP的目的是了解在需要之前不加载所有邮件的性能,而他却没有提到这些(如果你有这么多数据,这将非常重要,但我们不知道他处理了多少数据)。@Protron-你有什么观点吗?否则为什么要隐藏数据?释放屏幕空间或节省带宽。这两个我都提到过。