删除click事件后如何使用on()?

时间:2015-02-21 15:19:02

标签: jquery

off()正在删除click事件句柄。

on()应该重新绑定效果,但不起作用

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $('p').on('click', function(){
        $(this).css('color', 'blue');
    });
    $('#btn_off').click(function(){
        $('p').off('click');
    });
    $('#btn_on').click(function(){
        $('p').on('click');
    });
});
</script>

<span>Click the paragraph:</span>
<p>Prg #1</p>
<p>Prg #2</p>
<p>Prg #3</p>
<p>Prg #4</p>
<button id="btn_off">bind off prg.</button>
<button id="btn_on">bind on prg.</button>

在标题中查看我的问题。

2 个答案:

答案 0 :(得分:3)

绑定事件时,您没有传递点击处理程序。

使用

$(document).ready(function(){
    //Declare click handler
    var pClickHandler = function(){
        $(this).css('color', 'blue');
    }

    //Bind click handler on document ready
    $('p').on('click', pClickHandler);


    $('#btn_on').click(function(){
         //Bind click handler on on click
        $('p').on('click', pClickHandler);
    });
});

答案 1 :(得分:1)

jsBin demo

$(function() { // DOM Ready shorthand

  function changeColor() {
       $(this).css('color', 'blue');
  }

  $('#btn_off').click(function() {
     $('p').off('click', changeColor);  // Turn OFF
  });
  $('#btn_on').click(function() {
     $('p').on('click', changeColor);   // Turn ON
  }).trigger("click");                  // Activate. Same as doing: 
                                        // $('p').on('click', changeColor);

});