功能不会重复

时间:2014-07-11 14:50:14

标签: jquery

jQuery(document).ready(function($) {
  function passive(){
    $('.div_level_1_active').
      removeClass('div_level_1_active').
      addClass('div_level_1_passive');

    $(this).
      removeClass('div_level_1_passive').
      addClass('div_level_1_active');
  }

  $('.div_level_1_passive').on("click", passive);
});

上面的代码显示了一个简单的按钮点击,它将打开一个框。错误是,一旦我使用此事件,我再也无法使用它。我已经使用了函数,因此该方法可以使用多次,但它不会工作。

评论更新:

“我用它修好了。感谢你的时间,除非得到我的观点。”:

jQuery(document).ready(function ($) {
    function passive(thisObject) {
        $('.div_level_1_active').removeClass('div_level_1_active').addClass('div_leve‌​l_1_passive');
        $(thisObject).removeClass('div_level_1_passive').addClass('div_level_1_active');
    }
    function active(thisObject) {
        $(thisObject).removeClass('div_level_1_active').addClass('div_level_1_passive');
    }
    $('.div_level_1_passive').click(function () {
        passive(this);
    });
    $('.div_level_1_active').click(function () {
        active(this);
    });
});

2 个答案:

答案 0 :(得分:3)

您的on()仅适用于调用时存在的.div_level_1_passive元素。您想要处理稍后出现的那些(如在您的点击处理程序中):

$(document).on("click", '.div_level_1_passive', passive);

示例:http://codepen.io/paulroub/pen/kemay

答案 1 :(得分:1)

使用

  $(document).on("click", ".div_level_1_passive", passive);

绑定click事件。这将适用于div_level1_passive类的所有元素,即使在绑定click事件后添加