从$(document).ready或gender过滤器调用函数

时间:2017-10-13 07:33:04

标签: javascript jquery html node.js

我有一个名为createtable的函数,它将gender作为参数。当第一次加载页面时,我希望$(document).ready使用默认的性别值触发该函数,稍后我选择性别过滤器时,我希望使用该值执行createtable函数。以下是代码:

$(document).ready(function() {
  var gender = 'all';

  $('.ranges ul li').click(function() {
    $(".dropdown-toggle span").text($(this).text());
    $('.ranges ul li').removeClass("active");
    $(this).addClass("active");
    switch ($(this).text()) {
      case 'All':
        gender = 'all';
        break;
      case 'Female':
        gender = 'f';
        break;
      case 'Male':
        gender = 'm';
        break;
      case 'Not Specified':
        gender = 'none';
        break;
      default:
        gender = 'all'
    }
    createtable(gender);
  });

  createtable(gender);
});

createtable$(document).ready范围内定义的函数。问题是第一次加载页面时,createtable函数会被执行一次,但是当我使用过滤器更改性别时,它会被执行两次。

1 个答案:

答案 0 :(得分:0)

尝试停止事件传播

$(document).ready(function() {
  var gender = 'all';

  $('.ranges ul li').click(function(event) {
    event.stopPropagation(); //stop bubble up
    $(".dropdown-toggle span").text($(this).text());
    $('.ranges ul li').removeClass("active");
    $(this).addClass("active");
    switch ($(this).text()) {
      case 'All':
        gender = 'all';
        break;
      case 'Female':
        gender = 'f';
        break;
      case 'Male':
        gender = 'm';
        break;
      case 'Not Specified':
        gender = 'none';
        break;
      default:
        gender = 'all'
    }
    createtable(gender);
  });

  createtable(gender);
});