简化函数jquery

时间:2015-04-06 02:17:19

标签: function var light simplify

我在块中为各种元素重复了这些“功能”。 如何简化使用“var”?

谢谢你:)

例如:

$('#test1').waypoint(function (direction) {
  if (direction === 'down') {
    $(this).addClass("here");
    $(this).prevAll().removeClass("here");
    $(this).prev().prev().addClass("here_pre");
    $(this).next().next().addClass("here_pre");
  },
});

我想找到一个像这样的解决方案:

var active_here = $(this).addClass("here"),
                  $(this).prevAll().removeClass("here"),
                  $(this).prev().prev().addClass("here_pre"),
                  $(this).next().next().addClass("here_pre");

最后回忆起这样的事情:

$('#test1').waypoint(function (direction) {
  if (direction === 'down') {
  active_here;
  },
});

$('#test2').waypoint(function (direction) {
  if (direction === 'up') {
  active_here;
  },
});

etc... etc... etc...

2 个答案:

答案 0 :(得分:0)

为什么不做一个函数然后只调用函数内部的函数?

function active_here(this) {
      //code here..
}

答案 1 :(得分:0)

Javascript变量函数(或者也可以声明为普通函数):

var active_here = function($elem){
    $elem.addClass("here");
    $elem.prevAll().removeClass("here");
    $elem.prev().prev().addClass("here_pre");
    $elem.next().next().addClass("here_pre");
}

通话:

$('#test1').waypoint(function (direction) {
  if (direction === 'down') {
    active_here($(this));
  },
});

$('#test2').waypoint(function (direction) {
  if (direction === 'up') {
    active_here($(this));
  },
});