jQuery在函数中使用'this'

时间:2016-01-11 17:19:11

标签: jquery

我使用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());

您可以在此笔中看到代码在函数外部工作: http://codepen.io/amort2000/pen/KVqaqr 并且无法在此笔的功能中工作: http://codepen.io/amort2000/pen/YwQNOQ

1 个答案:

答案 0 :(得分:0)

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)
  });
});