-1

次のように、要素のクリック イベントを一時的に変更する必要があります。

var originalEvent = '';

$("#helpMode").click(function (e) {
      originalEvent = $("#element").getCurrentClickEventHandler();
      $("#element").click(function (e) {
          //Do something else
      });
});

//Later in the code
$("#helpModeOff").click(function (e) {
      $("#element").click(originalEvent);
});

後で再利用するために、イベント ハンドラーである現在の関数をグローバル変数に格納するにはどうすればよいですか?

編集:これが私がやろうとしていることです:

var evnt = '';

$("#helpTool").click(function (e) {
if(!this.isOn){

evnt = $("#Browse").data('events').click;
$("#ele").unbind('click');
$("#ele").click(function (e) {
    alert('dd');
});

this.isOn=true;
}else{
    this.isOn = false;
    alert('off');
    $("#ele").unblind('click');
    $("#ele").click(evnt);
}
});
4

3 に答える 3

0

Personally, I think I would avoid manually binding and unbinding handlers.

Another way to approach this is to bind click events to classes, then all you need to do is add and remove classes from the appropriate elements when switching to/from help mode.

Here's a jsfiddle illustrating what I mean.

Switching to and from help mode then just involves adding removing classes:

$('#btnhelpmode').click(function(){
    if(!helpMode){
     helpMode = true;   
     $('.normalmode').addClass('helpmode').removeClass('normalmode');
     $(this).val('Switch to normal mode...');                            
    }else{
     helpMode = false;   
     $('.helpmode').addClass('normalmode').removeClass('helpmode');              
     $(this).val('Switch to help mode...');                                        
    }        
});

and you just create the handlers required, binding them to the appropriate classes:

$('#pagecontent').on('click', '#element1.normalmode', function(){        
   alert('element1 normal mode'); 
});

$('#pagecontent').on('click', '#element1.helpmode', function(){        
   alert('element1 help mode'); 
});

$('#pagecontent').on('click', '#element2.normalmode', function(){        
   alert('element2 normal mode'); 
});

$('#pagecontent').on('click', '#element2.helpmode', function(){        
   alert('element2 help mode'); 
}); 
于 2012-07-24T20:16:04.600 に答える
0

どうぞ、それを理解しました:

e.srcElement.id を使用すると、HelpMode または HelpModeOff のいずれかを取得して、ヘルプのオン/オフを切り替えることができます!

http://jsfiddle.net/zcDQ9/1/

var originalEvent = '';

$('#element').on('yourCustomEvent', function (e) {
   // do stuff
   alert(originalEvent);
   $(this).toggleClass('toggleThing');

   //test for helpMode or helpModeOff here now...
});

$("#helpMode").on('click', function (e) {
    originalEvent = e.srcElement.id;
    $("#element").trigger('yourCustomEvent');
});


//Later in the code
$("#helpModeOff").on('click', function (e) {
   originalEvent = e.srcElement.id;
   $("#element").trigger('yourCustomEvent');
});​
于 2012-07-24T19:18:27.893 に答える
0

わかった。jQuery 1.7 では少し違うと思います。

//get the handler from data('events')

$.each($("#element").data("events"), function(i, event) {
    if (i === "click") {
        $.each(event, function(j, h) {
            alert(h.handler);
        });
    }   
});

http://jsfiddle.net/yQwZU/

これが参考です。

以下が 1.7 で動作するかどうかは不明です。

originalEvent = $('#element').data('events').click;

jQuery は、すべてのハンドラーを に格納しましたdata。について詳しくは、こちらをご覧くださいdata('events')

于 2012-07-24T19:18:43.023 に答える