jQuery एकाधिक ईवेंट हैंडलर-कैसे रद्द करें?




javascript-events event-handling (4)

JQuery ईवेंट ऑब्जेक्ट के stopImmediatePropagation फ़ंक्शन का उपयोग करें।

शेष हैंडलरों को निष्पादित होने से बचाता है इस विधि ने event.stopPropagation () को कॉल करके बुदबुदाबंदी भी बंद कर दी है।

$(document).click(function(event) { 
  alert('a');
  event.stopImmediatePropagation();
  return false;
});

$(document).click(function() {
  alert('b');
});

मेरे पास दो कार्य एक क्लिक इवेंट पर दो अलग-अलग समय पर हैं (jQuery का उपयोग करते हुए) जिस क्रम में उन्हें निकाल दिया जाता है वह महत्वपूर्ण है। वे सही क्रम में फायरिंग कर रहे हैं समस्या यह है, जब पहली फ़ंक्शन गलत देता है, दूसरा फ़ंक्शन अभी भी फ़ायरिंग है!

मैं घटना को कैसे ठीक से रद्द कर सकता हूं?

उदाहरण कोड:

$(document).click(function() { 
  alert('a');
  return false;
});

$(document).click(function() {
  alert('b');
});

पृष्ठ पर क्लिक करते समय आप अभी भी "बी" चेतावनी संदेश देखेंगे यह अस्वीकार्य है!


क्या अबाधित मदद का उपयोग करता है?

$(document).click(function() { 
  alert('a');
  $(this).unbind('click');
  return false;
});

यदि निकेफ़ ने काम नहीं किया है, तो आप एक छोटी राज्य मशीन का उपयोग कर सकते हैं:

var trigger = 0;

$(document).click(function() { 

  alert('a');
  if(you_want_to_return_false) {
    trigger = 1;
    return false;
  }
});

$(document).click(function() {
  if(trigger !== 0) {
  alert('b');
  } 
  trigger = 0;
});

सुंदर समाधान नहीं, लेकिन यह काम करेगा।


धन्यवाद, कार्यों को पुनर्परिभाषित करने के लिए अनंवित काम करता है

  $(document).ready(function(){
        $("#buscar_mercaderia").click(function(){ alert('Seleccione Tipo de mercaderia'); 
   });
$(".tipo").live('click',function(){
            if($(this).attr('checked')!=''){
                if($(this).val()=='libro'){
                    $("#buscar_mercaderia").unbind('click');
                    $("#buscar_mercaderia").click(function(){  window.open('buscar_libro.php','Buscar Libros', 'width=800,height=500'); });
                }else if($(this).val()=='otra'){
                    $("#buscar_mercaderia").unbind('click');
                    $("#buscar_mercaderia").click(function(){ window.open('buscar_mercaderia.php','Buscar Mercaderias', 'width=800,height=500');  });
                }
            }
        })






event-handling