jQuery使用';这';在函数中

jQuery使用';这';在函数中,jquery,Jquery,我使用jQuery打开和关闭了一些div 在我尝试将其用作函数之前,代码运行良好,我认为由于上下文/或范围问题,我一直用作选择器的jQuery(this)在从函数执行时不起作用 其功能是: function open_close_sections() { if(jQuery('.question').hasClass('open')) { jQuery(this).removeClass('open'); jQuery(this).n

我使用jQuery打开和关闭了一些div

在我尝试将其用作函数之前,代码运行良好,我认为由于上下文/或范围问题,我一直用作选择器的
jQuery(this)
在从函数执行时不起作用

其功能是:

  function open_close_sections() {
     if(jQuery('.question').hasClass('open')) {
            jQuery(this).removeClass('open');
            jQuery(this).next().slideUp();             
            }
           else
           { 
             jQuery('.open').not(this).next().slideUp();
             jQuery('.open').not(this).removeClass('open');
             jQuery(this).addClass('open');
             jQuery(this).next().slideDown();
           }

  }
我试着用它来调用它

jQuery('.question').click(open_close_sections());
您可以在此笔下看到在函数外部工作的代码: 以及未能在此笔下使用功能:

根据链接的副本。jQuery的
单击
需要函数引用,而不是调用函数的结果。去掉括号。这怎么是该问题的重复?你也可以使用
bind
绑定上下文。还有
jQuery('.question')。单击(open\u close\u sections())应该是
jQuery('.question')。单击(打开/关闭部分)
@lascort怎么会不呢?您标记为重复的问题并没有解决他在范围方面的主要问题。我想在范围问题解决后,他将不得不求助于这个问题。但我不认为这会让很多人——特别是雷吉特——感到失望。这很有效。现在,我要安静地坐下来学习一些jQuery教程,并尝试改进我的游戏。再次感谢,]
jQuery(document).ready(function() {
  function open_close_sections(x) {
    if (jQuery(x).hasClass('open')) {
      jQuery(x).removeClass('open');
      jQuery(x).next().slideUp();
    } else {
      jQuery('.open').not(x).next().slideUp();
      jQuery('.open').not(x).removeClass('open');
      jQuery(x).addClass('open');
      jQuery(x).next().slideDown();
    }

  }
  jQuery('.answer').hide();
  jQuery('.question').click(function () {
    open_close_sections(this)
  });
});