JQuery本地模拟与远程系统

时间:2011-04-08 19:02:35

标签: javascript jquery html toggle

我担心我可能已经在某个地方问过类似的问题,但我找不到解决办法。

这大致是我的环境+目的: 我有一个非常简单的HTML JQuery设置,当页面超过5个h3时,它的意图是折叠后面的内容。每个h3后跟一个或多个段落。如果页面确实有超过5个h3,则属于h3的每个内容都应自动折叠(隐藏),当单击并隐藏相应的h3时再次单击时显示。

这是我的 jquery 代码:

$(document).ready(function() {

if ($('h3').length > 4) {
    var headlines = $('h3').slice(3);
    var start = $('h3').slice(3,4);     
    var content = start.nextAll().not('h6');

    headlines.addClass('expandable-headline');
    content.hide(); 

    headlines.click(function() {        
        var successors = $(this).nextUntil('h3');
        successors.toggle();
        $(this).toggleClass('expandable-headline');
    }); 
}
});

这是我的 html

< h3>ABC</h3 >  
< p>some nice content</p >
< h3>ABC</h3>
< p>some nice content</p>
< p>some even nicer content</p>

最后但同样重要的是,这是我的问题:

当在简单的测试文件中本地运行时,上面的所有代码都很完美,但是当我在我的生产系统(Drupal站点)中尝试它时,它会在

处抛出错误
 var successors = $(this).nextUntil('h3');

说明 $(this).nextUntil不是函数

任何想法,这是关于什么的?

我感谢任何帮助 Best Greeets,
晴天

3 个答案:

答案 0 :(得分:1)

这是版本问题吗?

nextUntil是在v1.4中添加的,所以如果你的Drupal系统引用了旧版本的jQuery,那就是问题所在。

答案 1 :(得分:1)

您的jQuery版本是否相同?

要对此进行测试,请将此行代码插入到每个页面的脚本中:

alert(jQuery.fn.jquery);

它将alert()您的版本号。

如果您对nextUntil的搜索the jQuery changelog,您会看到它已在版本 1.4 中添加,因此您的Drupal jQuery版本可能已经过时了。

如果你打算升级jQuery(我不使用Drupal.Wordpress对我来说很好),这个问题似乎很相关:Drupal 6: best way to upgrade jQuery?

答案 2 :(得分:1)

确保您没有在页面上包含多个jquery文件。一些drupal模块将它们自己的jquery库插入到它们使用的页面中,如果它们不是正确的版本,您引用的jquery对象可能会被覆盖,并且是页面无效的原因。